从线框中移除面板

时间:2018-01-04 11:41:10

标签: java swing user-interface jframe jpanel

在我的程序中,有一个MainFrame(只是一个JFrame)和一个MainView(只是一个JPanel)。在计时器部分你可以看到,我想在编辑文件时从框架中删除面板,但没有任何反应。面板只停留在框架上并且不会消失。

public class MainClass {
private static String gesture;
private static MainFrame mainFrame;
private static MainView mainView;

public static void main(String[] args) {
    mainFrame = new MainFrame();
    mainFrame.setVisible(false);

    mainView = new MainView();
    mainFrame.add(mainView);

    mainFrame.setVisible(true);

    Timer gestureControl = new Timer();
    gestureControl.schedule(new TimerTask() {
        public void run() {
            String gestureNew = Filereader.getLines("/Users/alexanderjeitler-stehr/Desktop/widget.txt")[0];
            if(!gestureNew.equals(gesture)) {
                gesture = gestureNew;
                System.out.println(gesture);

                if(gesture.equals("1")) {
                    mainFrame.getContentPane().remove(mainView);
                    mainFrame.invalidate();
                    mainFrame.validate();
                }
            }
        }
    }, 0, 1000);
}
}

1 个答案:

答案 0 :(得分:1)

更改此部分:

if(gesture.equals("1")) {
    SwingUtilities.invokeLater() -> {
                mainFrame.getContentPane().remove(mainView);
                mainFrame.invalidate();
                mainFrame.validate();
                mainFrame.repaint();
    });
}

或者您可以使用SwingUtilities的invokeAndWait()。