我的脚本有问题;我想在按下按钮时重新绘制一个新图像(显示另一个图像),但该按钮不执行任何操作...
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);
答案 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);