0

这不是一个重复的问题。是的,有类似的,但没有一个提供有效的答案。

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 不会被重新绘制。

我怎样才能强制它重新粉刷?

4

1 回答 1

0

它不是一个完美的解决方案,但您可以验证和重绘整个应用程序,这就是我过去所做的。我用过类似的东西

class MyPanel extends JPanel{
     public void doRedraw(){
         getTopLevelAncestor().revalidate();
         getTopLevelAncestor().repaint();
     }
}

希望这可以帮助。

于 2013-11-08T11:55:40.447 回答