所以我目前有一個程序有兩個窗口延伸JFrame
。重新構建JFrame in actionPerformed方法
主窗口有一個打開新窗口(窗口2)的按鈕。 Window2
有自己定義的類與小部件和偵聽器。此刻,如果我在主窗體中多次按下按鈕,同時第二個窗口仍然打開,那麼它將切換到該窗口,而不會創建一個新窗口(這正是我想要的)。
第二個窗口還有一些小部件,一個搜索字段和一個根據用戶在JTextField
中輸入的內容填充的表格。問題是,一旦我關閉了Window2
並按下主窗口中的按鈕重新打開它,就會出現同一個窗口,並在搜索字段和填充表中顯示先前輸入的文本。
事情是,我想這樣做,一旦Window2
關閉並重新打開,然後我創建一個全新的Window2
實例與空搜索字段和表。我認爲這將適用於JFrame.DISPOSE_ON_CLOSE
但它沒有。
我的代碼有一點也許可以解釋這更好:
public class MainWindow extends JFrame{
/*
* create widgets and panels in Main window
*/
private Window2 ww = null;
Button.addActionListener(new ActionListener() { // the button that opens
//a new window
@Override
public void actionPerformed(ActionEvent e) {
if (ww==null) { //creating the new window here
ww = new Window2();
ww.setTitle("Window2");
ww.setSize(600, 400);
}
ww.setVisible(true);
});
}
/*
* Window 2
*/
public class Window2 extends JFrame {
//add widgets and listeners
pack();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
使用CardLayout與JFrame.pack() – mKorbel
不要使用多個JFrames - 欲瞭解更多信息,請看這裏http://stackoverflow.com/questions/9554636/the-use-of-multiple-jframes-good-bad-練習 – jrowe08
不幸的是,我必須這樣做,這是我學校項目的一項要求。 – user3281466