No puedo mostrar ImageIcon - swing
Frecuentes
Visto 4,865 equipos
3
public class GUI
{
JFrame frame;
JPanel squares[][];
/* Constructor credited to stackoverflow user ranzy
http://stackoverflow.com/questions/2535417/chess-board-in-java */
public GUI()
{
frame = new JFrame("Chess");
squares = new JPanel[8][8];
frame.setSize(500, 500);
frame.setLayout(new GridLayout(8, 8));
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
squares[i][j] = new JPanel();
if ((i + j) % 2 == 0) {
squares[i][j].setBackground(Color.white);
} else {
squares[i][j].setBackground(Color.orange);
}
frame.add(squares[i][j]);
}
}
ImageIcon pawnW = new ImageIcon(getClass().getResource("/images/pawnW.png"));
ImageIcon knightW = new ImageIcon("images/knightW.png");
ImageIcon bishopW = new ImageIcon("/images/bishopW.png");
ImageIcon rookW = new ImageIcon("/images/rookW.png");
ImageIcon queenW = new ImageIcon("/images/queenW.png");
ImageIcon kingW = new ImageIcon("/images/kingW.png");
ImageIcon pawnB = new ImageIcon("/images/pawnB.png");
ImageIcon knightB = new ImageIcon("/images/knightB.png");
ImageIcon bishopB = new ImageIcon("/images/bishopB.png");
ImageIcon rookB = new ImageIcon("/images/rookB.png");
ImageIcon queenB = new ImageIcon("/images/queenB.png");
ImageIcon kingB = new ImageIcon("/images/kingB.png");
squares[0][0].add(new JLabel(rookW));
squares[1][0].add(new JLabel(knightW));
squares[2][0].add(new JLabel(bishopW));
squares[3][0].add(new JLabel(queenW));
squares[4][0].add(new JLabel(kingW));
squares[5][0].add(new JLabel(bishopW));
squares[6][0].add(new JLabel(knightW));
squares[7][0].add(new JLabel(rookW));
squares[0][7].add(new JLabel(rookB));
squares[1][7].add(new JLabel(knightB));
squares[2][7].add(new JLabel(bishopB));
squares[3][7].add(new JLabel(queenB));
squares[4][7].add(new JLabel(kingB));
squares[5][7].add(new JLabel(bishopB));
squares[6][7].add(new JLabel(knightB));
squares[7][7].add(new JLabel(rookB));
for (int i = 0; i < 8; i++)
{
squares[i][1].add(new JLabel (pawnW));
squares[i][6].add(new JLabel (pawnB));
}
}
}
I'm not able to get the icons to display. I've looked through multiple tutorials on this as well as looked at others' code.
I tried three different ways:
ImageIcon pawnW = new ImageIcon(getClass().getResource("/images/pawnW.png"));
ImageIcon knightW = new ImageIcon("images/knightW.png");
ImageIcon bishopW = new ImageIcon("/images/bishopW.png");
1 Respuestas
6
Antes cualquier cosa, as a side note,
setVisible
debería ser el pasado thing you do después de adding all components
Also check the below
Funciona bien para mí usando getClass().getResource()
String path = "/images/stackoverflow2.png";
ImageIcon pawnW = new ImageIcon(getClass().getResource(path));
Check all below, then when correct it, constrúyelo, luego ejecútelo.
Estructura de archivos después de Tipo de Cuerpo. Images should get copied to class path
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class GUI
{
JFrame frame;
JPanel squares[][];
public GUI()
{
frame = new JFrame("Chess");
squares = new JPanel[8][8];
frame.setSize(500, 500);
frame.setLayout(new GridLayout(8, 8));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
squares[i][j] = new JPanel();
if ((i + j) % 2 == 0) {
squares[i][j].setBackground(Color.white);
} else {
squares[i][j].setBackground(Color.orange);
}
frame.add(squares[i][j]);
}
}
String path = "/images/stackoverflow2.png";
ImageIcon pawnW = new ImageIcon(getClass().getResource(path));
ImageIcon knightW = new ImageIcon(getClass().getResource(path));
ImageIcon bishopW = new ImageIcon(getClass().getResource(path));
ImageIcon rookW = new ImageIcon(getClass().getResource(path));
ImageIcon queenW = new ImageIcon(getClass().getResource(path));
ImageIcon kingW = new ImageIcon(getClass().getResource(path));
ImageIcon pawnB = new ImageIcon(getClass().getResource(path));
ImageIcon knightB = new ImageIcon(getClass().getResource(path));
ImageIcon bishopB = new ImageIcon(getClass().getResource(path));
ImageIcon rookB = new ImageIcon(getClass().getResource(path));
ImageIcon queenB = new ImageIcon(getClass().getResource(path));
ImageIcon kingB = new ImageIcon(getClass().getResource(path));
squares[0][0].add(new JLabel(rookW));
squares[1][0].add(new JLabel(knightW));
squares[2][0].add(new JLabel(bishopW));
squares[3][0].add(new JLabel(queenW));
squares[4][0].add(new JLabel(kingW));
squares[5][0].add(new JLabel(bishopW));
squares[6][0].add(new JLabel(knightW));
squares[7][0].add(new JLabel(rookW));
squares[0][7].add(new JLabel(rookB));
squares[1][7].add(new JLabel(knightB));
squares[2][7].add(new JLabel(bishopB));
squares[3][7].add(new JLabel(queenB));
squares[4][7].add(new JLabel(kingB));
squares[5][7].add(new JLabel(bishopB));
squares[6][7].add(new JLabel(knightB));
squares[7][7].add(new JLabel(rookB));
for (int i = 0; i < 8; i++)
{
squares[i][4].add(new JLabel (pawnW));
squares[i][6].add(new JLabel (pawnB));
}
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
new GUI();
}
});
}
}
Respondido 12 Feb 14, 07:02
@Alex2410 I figure I at least show my effort so it wasn't wasted. Maybe the OP missed something. Wasn't expecting any praise (up-votes) for it :D - Pablo Samsotha
era el set visible
thing... Could you edit your answer to reflect that? - Collin
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java swing intellij-idea imageicon or haz tu propia pregunta.
How are you compiling and building your code? With intellij? - Sotirios Delimanolis
Have you tried with the full path? e.g. c:/users/collin/ ... - ahmedalkaff
@ahmedalkaff The
Class#getResource(..)
method expects a path relative to the classpath. - Sotirios DelimanolisThe first should work, unless the
images
was never built into the bin. Check thebin
or its equivalent in Intellij (I have no clue what that is) and see if theimages
esta ahí. - Paul SamsothaIt's likely that intellij does not include the
src
directory within it's class path for running application. Have you compiled and built the project? Do you have a Jar file? If you do, unzip and see what's included... - MadProgrammer