这不是一个重复的问题。是的,有类似的,但没有一个提供了有效的答案。
public class Tool extends JPanel implements ActionListener{
public JPanel Panel;
public Tool() {
}
public void show(){
displayStuff();
Panel.setVisible(true);
revalidate();
repaint();
}
}
Tool MyTool = new Tool();
JPanel Master = new JPanel();
JPanel Dash = = new JPanel();
JTabbedPane Tabs = new JTabbedPane();
JTabbedPane Tabs.addTab("Dash", Dash);
JTabbedPane Tabs.addTab("Tool", MyTool.Panel);
Master.add(Tabs);
真正的代码要复杂得多。但基本问题是,当用户按下某些按钮时,MyTool.Panel发生了更改。
在使用鼠标移动Master之前,MyTool.Panel不会重新绘制。
如何强制重绘?
答案 0 :(得分:0)
它不是一个完美的解决方案,但您可以验证并重绘整个应用程序,这就是我过去所做的。我用过像
这样的东西class MyPanel extends JPanel{
public void doRedraw(){
getTopLevelAncestor().revalidate();
getTopLevelAncestor().repaint();
}
}
希望这会有所帮助。