为什么我的JLabel图标无法正确更新?

时间:2015-01-11 11:41:53

标签: java image swing embedded-resource imageicon

好的,所以说我的代码看起来像这样:

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内进行两个选择之前,它不会改变 之后它完美地运作。 如何设置它以便在第一次更改时更改?为什么它不会这样做呢?

1 个答案:

答案 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"))));

完全按照我的意愿制作。