0

フレームを2つ使用しています。最初のフレームには、2 番目のフレームを開くボタンがあります。2コマ目にもボタンがありますが、これは2コマ目を閉じるためのものです。しかし、これを行う方法がわかりません。これを解決するための助けを探していますか?

GUI1

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);
}
}

GUI2

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 に答える