我有这样定义的2个类:
public class Cartes extends JPanel
{
private BufferedImage image;
protected int tabC[] = new int[9];
public int randomC ;
public Cartes ()
{
..........
BufferedImage myPicture = null;
try {
myPicture = ImageIO.read(new File("images/"+randomC+".png"));
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
JLabel picLabel = new JLabel(new ImageIcon( myPicture ));
add( picLabel );
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(image, 0, 0, null); //
}
}
注意:randomC
是构造函数中生成的整数,允许我随机选择图像。
和
public class VueGeo extends JFrame
{
public Cartes pan = new Cartes();
private JButton bouton = new JButton("Change");
public VueGeo()
{
...
container.add(pan, BorderLayout.CENTER);
bouton.addActionListener(new BoutonListener ());
...
this.setContentPane(container);
this.setVisible(true);
}
class BoutonListener implements ActionListener
{
public void actionPerformed(ActionEvent arg0) {
????????
}
}
}
问题是我不知道放在actionPerformed
中的内容,以便每当我点击更改时允许我更改图像。有人有想法吗?
答案 0 :(得分:3)
在Cartes中制作一个setter方法:
public void setImage(BufferedImage i)
{ image = i; }
然后,在actionPerformed中,
cartes.setImage( (whatever image you would like) );
cartes.repaint();