Java重绘图像

时间:2011-01-26 03:05:58

标签: java image swing panel repaint

我的脚本有问题;我想在按下按钮时重新绘制一个新图像(显示另一个图像),但该按钮不执行任何操作...

ActionListener one = new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                panel2.revalidate();
                panel2.repaint();
            }
        };

        btn1.addActionListener(one);



        JLabel test1 = new JLabel(myDeckOfCards.giveCardPlayer1().getImage());

        panel2.add(lab1);
        panel2.add(test1);
        panel2.add(pn5);
        panel2.add(pn1);
        panel2.add(btn1);

1 个答案:

答案 0 :(得分:5)

actionPerformed内,您需要抓住JLabel并在其上调用setIcon(),然后传递新图片。

有几种获取JLabel的方法,一种方法是确保在final方法的范围内声明有一个actionPerformed变量包含它,另一种方法是查找它来自panel2(不推荐)。

如果您为此目的声明一个完整的类,也可以通过构造函数将其传递给ActionListener

修改

final JLabel test1 = new JLabel(myDeckOfCards.giveCardPlayer1().getImage());

ActionListener one = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // Get 'anotherIcon' from somewhere, presumably from a similar
        // place to where you retrieved the initial icon
        test1.setIcon(anotherIcon);
    }
};

btn1.addActionListener(one);

panel2.add(lab1);
panel2.add(test1);
panel2.add(pn5);
panel2.add(pn1);
panel2.add(btn1);