【发布时间】:2021-12-16 02:01:46
【问题描述】:
我创建了一个 JPanel 的子类来显示图像。我在 JFrame 的构造函数中实例化它并将其添加到该 JFrame。这完美地工作。然后我添加了一个带有 ActionListener 的按钮来更改该图像。我的问题是 JFrame 不会更新,尽管我尝试过重新绘制等。
JPanel 的子类:
public class ImagePanel extends JPanel {
BufferedImage bf;
public ImagePanel(String dateiname)
{
try {
bf = ImageIO.read(new File(dateiname));
} catch (IOException e) {
e.printStackTrace();
}
}
public void paint(Graphics g)
{
g.drawImage(bf.getScaledInstance(300,200,1),0,0,null );
}
}
JFrame基本上是这样的
public class Hauptfenster extends JFrame {
private JButton changeImage;
private JPanel buttonPanel;
private ImagePanel ip;
public Hauptfenster {
ip = new ImagePanel("first_image.jpg");
buttonPanel = new JPanel();
buttonPanel.add(changeImage);
changeImage.addActionListener((e) -> {
ip = new ImagePanel("new_image.jpg");
ip.setVisible(true);
});
this.add(buttonPanel);
this.add(ip);
this.setVisible(true);
}
}
为什么 ActionListener 中的方法不更新 JFrame Hauptfenster 中的 ip 组件?
【问题讨论】: