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与Dubbo整合的方式详解

    SpringBoot与Dubbo整合的方式详解

    这篇文章主要介绍了SpringBoot与Dubbo整合的方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 在Filter中不能注入bean的问题及解决

    在Filter中不能注入bean的问题及解决

    这篇文章主要介绍了在Filter中不能注入bean的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 从零开始Mybatis连接数据库的方法

    从零开始Mybatis连接数据库的方法

    这篇文章主要介绍了Mybatis连接数据库的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • 使用Spring事件机制实现异步的方法

    使用Spring事件机制实现异步的方法

    这篇文章主要介绍了使用Spring事件机制实现异步的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Java版本和C++版本的二叉树序列化与反序列化

    Java版本和C++版本的二叉树序列化与反序列化

    这篇文章主要介绍了Java版本和C++版本的二叉树序列化与反序列化,二叉树就是节点在内存区域中串联起来的,但是如果掉电,内存上的数据就没有了。为了保存这种结构,将二叉树用字符串的形式保存到硬盘中,这就是序列化;从字符串形式转换为二叉树,这就是反序列化
    2022-06-06
  • Java中对象序列化与反序列化详解

    Java中对象序列化与反序列化详解

    这篇文章主要介绍了Java中对象序列化与反序列化,较为详细的分析了java中对象序列化的概念、原理、实现方法及相关注意事项,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • Java轻松使用工具类实现获取MP3音频时长

    Java轻松使用工具类实现获取MP3音频时长

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用工具类来获取一个MP3音频文件的时间长度,感兴趣的同学继续往下阅读吧
    2021-10-10
  • Java Thread多线程开发中Object类详细讲解

    Java Thread多线程开发中Object类详细讲解

    这篇文章主要介绍了Java Thread多线程开发中Object类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-03-03
  • springboot @PostConstruct无效的解决

    springboot @PostConstruct无效的解决

    这篇文章主要介绍了springboot @PostConstruct无效的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 使用Java编写一个文件批量重命名工具

    使用Java编写一个文件批量重命名工具

    这篇文章主要为大家详细介绍了如何使用Java编写一个文件批量重命名工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12

最新评论