Java Swing 只關(guān)閉當前窗體的實現(xiàn)
看到很多人都在詢問怎么在java swing中只關(guān)閉當前的窗體,因此寫下此文。
主界面主要是有兩個JButton,一個是通過按鈕事件調(diào)起另一個JFame,另一個是關(guān)閉當前窗體。
1、關(guān)閉當前窗體不能使用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)方法,可以使用
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
2、通過JButton事件不能使用exit(),這樣會使得整個程序的窗體全部關(guān)閉,可以使用dispose();這樣就只關(guān)閉了當前窗體
具體實現(xiàn)如下:
NewFrame.java
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class NewFrame extends JFrame {
/**
* called another JFrame
* close this JFrame
* write by Jimmy.li
* time:2016/4/6 22:55
*/
private static final long serialVersionUID = 1L;
public NewFrame() {
// 普通按鈕控件
JFrame jf = new JFrame("main");
Toolkit tk = this.getToolkit();// 得到窗口工具條
int width = 650;
int height = 500;
Dimension dm = tk.getScreenSize();
jf.setSize(300, 200);// 設置程序的大小
jf.setLocation((int) (dm.getWidth() - width) / 2,
(int) (dm.getHeight() - height) / 2);// 顯示在屏幕中央
jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
jf.setVisible(true);
JPanel contentPane = new JPanel();
jf.setContentPane(contentPane);
// 創(chuàng)建兩個按鈕,并且將按鈕添加到內(nèi)容面板中
JButton another = new JButton("另起頁面");
JButton close = new JButton("關(guān)閉");
contentPane.add(another);
contentPane.add(close);
another.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new exit();
}
});
close.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
}
public static void main(String[] args)
{
new NewFrame();
}
}
效果圖如下:

只關(guān)閉exit的窗體,而不涉及父窗體。
exit.java代碼如下
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* called another JFrame close this JFrame write by Jimmy.li time:2016/4/6 22:55
*/
public class exit {
private static final int WIDTH = 300;
private static final int HEIGHT = 200;
public exit() {
// 普通按鈕控件
final JFrame jf = new JFrame("exit");
jf.setSize(WIDTH, HEIGHT);
jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
jf.setVisible(true);
JPanel contentPane = new JPanel();
jf.setContentPane(contentPane);
// 創(chuàng)建兩個按鈕并添加到內(nèi)容面板
JButton close1 = new JButton("關(guān)閉");
contentPane.add(close1);
close1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// System.exit(0);
jf.dispose();
}
});
}
public static void main(String[] args)
{
new exit();
}
}
這樣通過點擊關(guān)閉按鈕,只關(guān)閉了當前的exit窗體,而父窗體還存在。
補充知識:java中JFrame和Frame的窗體關(guān)閉區(qū)別
在JFrame中是使用setDefaultCloseOperation()方法的,例如:
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
在Frame中是使用一個事件監(jiān)聽器,如下:
win.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
以上這篇Java Swing 只關(guān)閉當前窗體的實現(xiàn)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于String轉(zhuǎn)Json的幾種方式
這篇文章主要介紹了關(guān)于String轉(zhuǎn)Json的幾種方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
基于Java SSM實現(xiàn)Excel數(shù)據(jù)批量導入
這篇文章主要為大家詳細介紹了基于Java SSM如何實現(xiàn)excel數(shù)據(jù)批量導入,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
Dubbo+Nacos服務啟動報錯,返回unknown user的問題
這篇文章主要介紹了Dubbo+Nacos服務啟動報錯,返回unknown user的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
關(guān)于Lists.partition集合分組使用以及注意事項
這篇文章主要介紹了關(guān)于Lists.partition集合分組使用以及注意事項,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
詳解Spring Security中獲取當前登錄用戶的詳細信息的幾種方法
本文主要介紹了詳解Spring Security中獲取當前登錄用戶的詳細信息的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05

