對於我編寫的某些代碼嘗試某些內容有點小問題。我用一個按鈕製作了一個框架。當我點擊這個按鈕,一個新的框架打開,它應該。我關閉新框架,然後再次單擊該按鈕,嘗試查看它是否仍然有效。這個問題從這裏開始,科西嘉試圖打開一個新的框架,它打開兩個新的框架。第三次,我點擊它打開4幀等。我嘗試了很多東西,但是很遺憾,似乎找不到它打開更多框架的原因。請幫忙。在每次點擊時打開雙倍數量的新幀
package budget;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame {
String labelPrefix;
JButton button;
JButton button2;
JLabel label;
public static void main(String[] args) {
JFrame f = new GUI();
f.setExtendedState(f.MAXIMIZED_BOTH);
f.setVisible(true);
}
public GUI() {
JPanel p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
p.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
button = new JButton("Click Me");
label = new JLabel(labelPrefix);
p.add(button);
this.setTitle("Try");
getContentPane().add(p);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
button.addActionListener(new MyActionListener());
}
class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
button.addActionListener(this);
labelPrefix = "Try";
JFrame f2 = new GUI(label, labelPrefix);
f2.setExtendedState(f2.MAXIMIZED_BOTH);
f2.setVisible(true);
}
}
public GUI(JLabel label, String labelPrefix) {
JPanel p2 = new JPanel();
button2 = new JButton("Close");
p2.add(label);
p2.add(button2);
this.setTitle("Try");
getContentPane().add(p2);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
pack();
button2.addActionListener(new MyActionListener2());
}
class MyActionListener2 implements ActionListener {
public void actionPerformed(ActionEvent e) {
button2.addActionListener(this);
dispose();
}
}
}
*「一個新的框架打開,它應該」*要求不同。請參閱[使用多個JFrames,良好/錯誤的實踐?](http://stackoverflow.com/a/9554657/418556) –