簡體   English   中英

關閉JFrame窗口?

[英]Closing a JFrame window?

我正在使用兩個框架。 在第一幀中,我有一個按鈕來打開第二幀。 在第二幀中還有一個按鈕,但是這個按鈕用於關閉第二幀。 但我不知道該怎么做,我正在尋找一些幫助來解決這個問題?

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 ??
    }
}
}

只需在監聽器中調用dispose():

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

此外,通過單擊X,這將defaultCloseOperator(DISPOSE_ON_CLOSE);窗口,因為您已設置defaultCloseOperator(DISPOSE_ON_CLOSE);

您的contentPane有一個名為remove的方法(如果您要刪除所有框架,則刪除所有框架)。 contentPane.remove(this)應該可以工作。

你只調用方法dipose()

您需要在GUI2中引用GUI1的實例。 因此,可以在GUI2類中添加私有變量private GUI1 firstGUI 然后編寫一個setter方法public void setGUI1(GUI1 myFirstGUI){ this.firstGUI = myFirstGUI; } public void setGUI1(GUI1 myFirstGUI){ this.firstGUI = myFirstGUI; }

然后,您應該使用此setter從外部設置GUI1變量。

然后你可以在你的actionPerformed方法中為btn2調用firstGUI.dispose()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM