好的,所以说我的代码看起来像这样:
private void gameBoxActionPerformed(java.awt.event.ActionEvent evt) {
gameBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
try {
if(gameBox.getSelectedItem().equals("file1"))
gameLabel.setIcon(new ImageIcon(ImageIO.read(new File("src/icons/file1.png"))));
if(gameBox.getSelectedItem().equals("file2"))
gameLabel.setIcon(new ImageIcon(ImageIO.read(new File("src/icons/file2.png"))));
if(gameBox.getSelectedItem().equals("file3"))
gameLabel.setIcon(new ImageIcon((ImageIO.read(new File("src/icons/file3.png")))));
if(gameBox.getSelectedItem().equals("file4"))
gameLabel.setIcon(new ImageIcon(ImageIO.read(new File("src/icons/file4.png"))));
if(gameBox.getSelectedItem().equals("file5"))
gameLabel.setIcon(new ImageIcon(ImageIO.read(new File("src/icons/file5.png"))));
if(gameBox.getSelectedItem().equals("file6"))
gameLabel.setIcon(new ImageIcon(ImageIO.read(new File("src/icons/file6.png"))));
} catch (IOException ex) {
Logger.getLogger(GUIMain.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
}
gameLabel
的起始图标为file1.png
,更改gameBox
中项目(组合框)时所需的操作是imageIcon
gameLabel
改变。
我遇到的问题是,在gameBox
内进行两个选择之前,它不会改变
之后它完美地运作。
如何设置它以便在第一次更改时更改?为什么它不会这样做呢?
答案 0 :(得分:-1)
我修好了。
根据geert3的提及,我有嵌套的动作侦听器,它们引起了问题。
简而言之:
if(gameBox.getSelectedItem().equals("file1"))
gameLabel.setIcon((Icon) new ImageIcon("src/icons/file1.png"));
repaint();
而不是:
if(gameBox.getSelectedItem().equals("file1"))
gameLabel.setIcon(new ImageIcon(ImageIO.read(new File("src/icons/file1.png"))));
完全按照我的意愿制作。