Java GUI实现多个窗口切换效果

 更新时间:2022年04月26日 18:11:41   作者:养猪去  
这篇文章主要为大家详细介绍了Java GUI实现多个窗口的切换效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java GUI实现多个窗口切换效果的具体代码,供大家参考,具体内容如下

功能:

主要实现的功能为实现多个界面的切换,并且一个window的打开和关闭可以影响其他window。

不足:

①可以多次多开同一个界面(可以加一个变量控制)
②没有实现一个的窗体关闭,它的子窗体也随即关闭的效果

效果图:

第一个界面(主界面)

package 多界面跳转;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

class Frame1 extends JFrame implements WindowListener
{
    JButton b2 = new JButton("界面2");
    JButton b11 = new JButton("界面11");

    
    private class btListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e) {
            if(e.getActionCommand().equals("界面2")) 
            {
                setVisible(false);
                new Frame2();
            }
            else if(e.getActionCommand().equals("界面11"))
            {
                new Frame11();
            }
        }
    }
    
    public Frame1()
    {
        this.setTitle("界面1");
        this.setSize(400, 300);
        this.setLayout(new FlowLayout());
        b11.addActionListener(new btListener());
        b2.addActionListener(new btListener());
        this.add(b11);
        this.add(b2);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
    }

    public void windowOpened(WindowEvent e) {
    }

    public void windowClosing(WindowEvent e) {
        setVisible(true);
    }
    public void windowClosed(WindowEvent e) {
    }
    public void windowIconified(WindowEvent e) {
    }
    public void windowDeiconified(WindowEvent e) {
    }
    public void windowActivated(WindowEvent e) {
    }
    public void windowDeactivated(WindowEvent e) {
    }


    public static void main(String[] args) {
        Frame1 f1 = new Frame1();
        f1.setVisible(true);
    }
}

第二个界面

package 多界面跳转;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

class Frame2 extends JFrame implements ActionListener
{
    JButton bt = new JButton("界面21");
    Frame2()
    {
        this.setSize(350, 300);
        this.setLocationRelativeTo(null);
        this.setLayout(new FlowLayout());
        this.setTitle("界面2");
        this.add(bt);
        bt.addActionListener(this);
        this.addWindowListener(new Frame1());
        this.addWindowListener(new Frame11());        
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.setVisible(true);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        new Frame21();
    }
}

由第一个界面打开的界面

package 多界面跳转;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
class Frame11 extends JFrame implements WindowListener
{
    Frame11()
    {
        this.setSize(300, 200);
        this.setLocationRelativeTo(null);
        this.setTitle("界面11");
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.setVisible(true);
    }

    @Override
    public void windowOpened(WindowEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void windowClosing(WindowEvent e) {
        // TODO Auto-generated method stub
        if(this.isVisible()) {
//            setSize(800,600);
        }
    }
        

    @Override
    public void windowClosed(WindowEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void windowIconified(WindowEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void windowDeiconified(WindowEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void windowActivated(WindowEvent e) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void windowDeactivated(WindowEvent e) {
        // TODO Auto-generated method stub
        
    }
}

由第二个界面打开的界面

package 多界面跳转;
import javax.swing.*;
import java.awt.*;
class Frame21 extends JFrame
{
    Frame21()
    {
        this.setSize(150, 100);
        this.setLocationRelativeTo(null);
        this.setTitle("界面21");
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.setVisible(true);
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Springboot RestTemplate设置超时时间的简单方法

    Springboot RestTemplate设置超时时间的简单方法

    学习springboot ,RestTemplate的使用场景非常非常多,比如springcloud中的服务消费,下面这篇文章主要给大家介绍了关于Springboot RestTemplate设置超时时间的简单方法,需要的朋友可以参考下
    2022-01-01
  • Java C++题解leetcode 1684统计一致字符串的数目示例

    Java C++题解leetcode 1684统计一致字符串的数目示例

    这篇文章主要为大家介绍了Java C++题解leetcode 1684统计一致字符串的数目示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Java后台返回blob格式的文件流的解决方案

    Java后台返回blob格式的文件流的解决方案

    在Java后台开发中,经常会遇到需要返回Blob格式的文件流给前端的情况,Blob是一种二进制大对象类型,可以用于存储大量的二进制数据,例如图片、音频、视频等,本文将为你详细介绍如何在Java后台中返回Blob格式的文件流,需要的朋友可以参考下
    2024-08-08
  • 如何取消IDEA中的项目和Git仓库的关联

    如何取消IDEA中的项目和Git仓库的关联

    这篇文章介绍了一种取消已经开启代码控制的项目与Git仓库关联的简单方法,首先,在IntelliJ IDEA中打开项目,删除.idea目录下的vcs.xml文件,这样IDE界面上的Git图标就会消失,接下来,打开项目所在位置,通过文件管理器启用“显示隐藏的项目”选项
    2024-10-10
  • MyBatis Plus Mapper CRUD接口测试方式

    MyBatis Plus Mapper CRUD接口测试方式

    在数据库管理系统中,插入记录是添加新数据条目,而删除操作包括根据主键ID单条删除和批量删除,也可以基于特定条件进行删除,删除操作的SQL语句是通过键值对在Map中拼接而成,如delete from 表 where key1=value1 AND key2=value2
    2024-09-09
  • java中使用interrupt通知线程停止详析

    java中使用interrupt通知线程停止详析

    这篇文章主要介绍了java中使用interrupt通知线程停止详析,文章介绍的是使用interrupt来通知线程停止运行,而不是强制停止,详细内容需要的小伙伴可以参考一下
    2022-09-09
  • Spring Data Jpa框架最佳实践示例

    Spring Data Jpa框架最佳实践示例

    这篇文章主要为大家介绍了Spring Data Jpa框架最佳实践示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-02-02
  • java设计模式-单例模式实现方法详解

    java设计模式-单例模式实现方法详解

    单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例
    2021-07-07
  • SpringBoot如何读取war包jar包和Resource资源

    SpringBoot如何读取war包jar包和Resource资源

    这篇文章主要介绍了SpringBoot如何读取war包jar包和Resource资源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • java接口防重提交的处理方法

    java接口防重提交的处理方法

    本文主要介绍了java接口防重提交的处理方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05

最新评论