Java实现关闭子窗口,父窗口不关闭的方法实例 您所在的位置:网站首页 怎么关闭页面中的窗口功能呢 Java实现关闭子窗口,父窗口不关闭的方法实例

Java实现关闭子窗口,父窗口不关闭的方法实例

2024-07-12 00:40| 来源: 网络整理| 查看: 265

前言序锦

今天晚上写Java界面的时候发现一个问题,困惑了我老半天:就是当我想实现从一个界面中点击按钮进入另一个页面后,然后当我使用完毕后,想退出第二个页面,然后回退到第一个页面的时候,我发现这个时候非常奇怪我的页面都给关闭了,着实想了好久才把这个问题给解决掉,而其实这个问题只要你弄清楚原理,也就是很简单的了……

正文 需求描述

我想实现在一级主窗口上,通过点击一个按钮实现跳转到另一个我们需要进行操作的页面上,然后在这个页面上我们进行了相应的操作后,再点击关闭,关闭第二个二级窗口,但是保留第一个一级主窗口,如下图所示:

这是一个一级窗口,通过点击下面的余弦相似度分析,跳转到第二个页面上

这里写图片描述

这是第二个页面,通过进行对应的操作后,回退到第一个页面上

这里写图片描述

最后,剩下我们的一级界面继续操作,

这里写图片描述

分析

通过上面的需求分析,我们知道了自己想要实现一个什么样的功能,这个时候我们就需要知道,我们是要具体怎么做了……

第一步

我们肯定要创建两个窗口,一个父窗口,一个子窗口,我用的都是JFrame来创建窗口的;

第二步

我们创建窗口后,我们就需要对每个窗口来进行设置,达到我们想要的结果

第三步

两个窗口创建好,设置好,就需要来设置点击事件,实现跳转了

第四步

哈哈,没了,大功告成了……

代码奉上 //这是父窗口类 public class Indexer extends JFrame implements ActionListener{ // 定义组件 private JPanel contentPane; private JButton jb_Cos; public static void main(String[] args) throws Exception { EventQueue.invokeLater(new Runnable() { public void run() { try{ Indexer frame=new Indexer(); // 创建一个窗口 frame.setVisible(true); }catch (Exception e) { e.printStackTrace(); } } }); } public Indexer() throws IOException { setTitle("搜索引擎ing……"); // 标题 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置关闭时推出JVM setSize(1200,800); // 设置窗口大小 setLocationRelativeTo(null); // 设置窗体居中 contentPane=new JPanel(); // 内容面板 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); // 设置布局 setContentPane(contentPane); JPanel panelSouth=new JPanel(); contentPane.add(panelSouth,BorderLayout.SOUTH); jb_Cos = new JButton("文本相似度比较"); jb_Cos.setForeground(Color.blue); panelSouth.add(jb_Cos); jb_Cos.addActionListener(this); } public void actionPerformed(ActionEvent e) { // 这是父窗口的按钮响应触发事件 if(e.getSource() == jb_Cos){ new windowsCanvas().initCanvas(); } } } //这是子窗口类 class windowsCanvas extends JFrame implements ActionListener, MouseMotionListener, MouseListener { JFrame f = new JFrame(); public void initCanvas() { // 并进行注册监听事件 setTitle("余弦相似度分析"); // 标题 setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); // 设置关闭时推出JVM setSize(1200,800); // 设置窗口大小 setVisible(true); //设置窗口是否可见 setLocationRelativeTo(null); // 设置窗体居中 contentPane=new JPanel(); // 内容面板 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); // 设置布局 setContentPane(contentPane); } } 代码解析

这其中,其实很多设置方面的东西,我们都不需要去看,而我们主要要去看的两句代码:

//父窗口类中的 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//子窗口类中的 setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); 这种情况是setDefaultCloseOperation()参数选择的问题。EXIT_ON_CLOSE做参数的时候使用的是System.exit方法退出应用程序。故会关闭所有窗口。而HIDE_ON_CLOSE参数表示调用已注册的WindowListener对象后自动隐藏窗体。这样我们在一级窗口上设置为EXIT_ON_CLOSE,则表示一级窗口点击关闭就是真的关闭了,而二级窗口设置上设置为HIDE_ON_CLOSE,则表示为点击关闭其实是隐藏窗口,则达到了一个关闭的效果,但是又不关闭父窗口的效果。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有