gpt4 book ai didi

java - 刷新我的 JFrame

转载 作者:行者123 更新时间:2023-12-02 07:02:19 24 4
gpt4 key购买 nike

我想在应用程序上显示图像,当我想打开另一个应用程序时,我希望新图像覆盖旧图像。

我到处寻找解决方案,例如使用 invalidate()、repaint() 等,但仍然不起作用,而且我不明白为什么窗口不刷新,有人可以帮助我吗?

这里是代码:

public void actionPerformed(ActionEvent e) 
{
System.out.println(e.getActionCommand());
if (e.getActionCommand().contains("Open"))
{
filename_ = new String();
filename_ = JOptionPane.showInputDialog("File to open ?");
ImagePanel test = new ImagePanel(new File(filename_));

test.setPreferredSize(new Dimension(test.getWidth(), test.getHeight()));
test.setMinimumSize(new Dimension(test.getWidth(), test.getHeight()));
test.repaint();
JScrollPane tmp = new JScrollPane();
tmp.getViewport().add(test);

tmp.getViewport().repaint();
mainPanel_.add(tmp, BorderLayout.NORTH);
mainPanel_.repaint();
curim_ = test;
test.memento_ = new Memento(test);
test.caretaker_.add(test.memento_);
curim_ = test;


curmodindex_ = curim_.caretaker_.getIndex();
this.setContentPane(mainPanel_);
System.out.println(curmodindex_);
if (curmodindex_ != 0)
{
button1.setEnabled(true);
button2.setEnabled(true);
}
}

最佳答案

不要创建新组件。只需更新现有组件的数据即可。也许是这样的:

scrollPane.setViewportView( imagePanel );

或者更简单,只需使用 JLabel 来显示您的图像。然后当图像发生变化时,您可以使用:

label.setIcon( new ImageIcon(...) );

如果没有适当的 SSCCE,很难猜测您做错了什么。例如我看到:

tmp.getViewport().add(test);
...
test.memento_ = new Memento(test);

在不知道您的代码的作用的情况下,您似乎正在尝试将相同的组件添加到两个不同的组件中,这是不允许的。

关于java - 刷新我的 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16486180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com