1 回答

TA貢獻1829條經(jīng)驗 獲得超7個贊
問題:
public class Images extends JLabel{
private JLabel heads, tails;
public Images() {
heads = new JLabel(new ImageIcon("img/heads.png"));
tails = new JLabel(new ImageIcon("img/tails.png"));
add(heads);
add(tails);
}
}
JLabels 使用空布局,這意味著您的內(nèi)部 JLabel 組件的大小將為 0, 0,并且圖像 JLabel 本身將具有相同的首選大小,并且不會顯示任何內(nèi)容,因此您永遠不想將 JLabel 添加到J標簽。不要讓圖像擴展 JLabel,而是擴展 JPanel,并給它一個像樣的布局,也許是 GridLayout。
例如。,
public class ImagePanel extends JPanel {
private JLabel headsLabel = new JLabel();
private JLabel tailsLabel = new JLabel();
public ImagePanel(Icon headsIcon, Icon tailsIcon) {
headsLabel.setIcon(headsIcon);
tailsLabel.setIcon(tailsIcon);
setLayout(new GridLayout(1, 0);
add(headsLabel);
add(tailsLabel);
}
}
再次,我建議將圖像作為資源獲取,而不是使用 ImageIO 讀取的文件,例如
Image headImage = ImageIO.read(getClass().getResource(resourcePath));
Icon headIcon = new ImageIcon(headImage);
資源路徑至關重要,并且取決于圖像相對于類文件的位置。
添加回答
舉報