0

我正在使用两个框架。在第一帧中,我有一个打开第二帧的按钮。在第二帧中还有一个按钮,但这个按钮用于关闭第二帧。但我不知道该怎么做,我正在寻找一些帮助来解决这个问题?

图形用户界面1

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI1 extends JFrame implements ActionListener{
JButton btn1;
Container contentPane;
public GUI1()
{
    setTitle("GUI 1");
    setResizable(false);
    setSize(600,300);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    contentPane = getContentPane();
    contentPane.setLayout(new FlowLayout());
    btn1 = new JButton("Open GUI 2 frame");
    contentPane.add(btn1);
    btn1.setFocusable(false);
    btn1.addActionListener(this);
}
public void actionPerformed(ActionEvent event){
    if(event.getSource() == btn1)
    {
        GUI2 frame2 = new GUI2();
        frame2.setVisible(true);
    }
}
public static void main(String[] args) {
    GUI1 frame = new GUI1();
    frame.setVisible(true);
}
}

图形用户界面2

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI2 extends JFrame implements ActionListener {
Container contentPane;
JButton btn2;
public GUI2()
{
    setTitle("GUI 2");
    setResizable(false);
    setSize(400,200);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    contentPane = getContentPane();
    contentPane.setLayout(new FlowLayout());
    btn2 = new JButton("Close GUI 2 frame");
    contentPane.add(btn2);
    btn2.addActionListener(this);
}
public void actionPerformed(ActionEvent event){
    if(event.getSource() == btn2)
    {
        // Close GUI2 ??
    }
}
}
4

4 回答 4

2

只需在侦听器中调用 dispose() 即可:

public void actionPerformed(ActionEvent event){
    if(event.getSource() == btn2)
    {
        dispose();
    }

此外,通过单击 X,这将释放窗口,因为您已设置defaultCloseOperator(DISPOSE_ON_CLOSE);

于 2012-05-29T09:04:52.457 回答
0

您的 contentPane 有一个名为 remove 的方法(如果您想删除所有框架,则为 removeAll)。contentPane.remove(this) 应该可以工作。

于 2012-05-29T09:04:43.310 回答
0

你只调用方法dipose()

于 2012-05-29T09:05:31.443 回答
0

您需要在 GUI2 中引用您的 GUI1 实例。private GUI1 firstGUI所以也许在你的 GUI2 类中添加一个私有变量。然后写一个setter方法 public void setGUI1(GUI1 myFirstGUI){ this.firstGUI = myFirstGUI; }

然后,您应该使用此设置器从外部设置 GUI1 变量。

然后你可以firstGUI.dispose()为 btn2 调用你的 actionPerformed 方法。

于 2012-05-29T09:08:55.747 回答