0

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

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);
4

1 回答 1

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);
于 2011-01-26T03:16:09.530 回答