java切换界面

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

java切换界面

qq_43919694   2022-06-03 我要评论

1.关于java的GUI简单切换界面

在刚开始学习java的gui界面设计的时候因为课本上没有相关切换界面的介绍,所以如何进行简单的一个界面切换困扰了我很久。因此我上网看了一些代码,却发现网上的大多数代码都很繁琐,仔细看下去感觉有许多冗余,虽然那些代码达到了切换界面的目的,但也有其它一些我暂时用不上的功能。
简而言之,就是网上这部分的代码不够精简。于是我开始单单把这一简单的功能剥离出来。废话不多说还是先上代码吧,想说的话都在注释里。 视图部分代码:

import java.awt.BorderLayout;
import javax.swing.*;

public class View extends JFrame {
    public void view()
    {
        ViewAction exwpAction=new ViewAction(this);//提前定义好动作对象
        setLayout(new BorderLayout());//使用BorderLayout布局
        setSize(400,400);//设置界面大小
        this.setTitle("视图1界面");//设置界面名称
        JButton eb=new JButton("视图2");//设置切换的按钮eb
        JLabel tip_l=new JLabel("视图1",0);//界面的内容,这里用一个标签来替代具体内容,后面的“0”是为了使这个标签居中对齐
        eb.addActionListener(exwpAction);//为eb这个按钮添加按键监听
        add(tip_l, BorderLayout.CENTER);//将tip_l这个标签添加到布局的中间
        add(eb, BorderLayout.SOUTH);//将按钮eb添加到布局的下方
        setVisible(true);//使视图可视化
    }
    public void view2()
    {
        ViewAction exwpAction=new ViewAction(this);
        setLayout(new BorderLayout());
        setSize(400,400);
        this.setTitle("视图2界面");
        JButton eb=new JButton("视图1");
        JLabel tip_l=new JLabel("视图2",0);
        eb.addActionListener(exwpAction);
        add(tip_l, BorderLayout.CENTER);
        add(eb, BorderLayout.SOUTH);
        setVisible(true);
    }

}

动作部分代码:

import java.awt.event.ActionEvent;

public class ViewAction implements java.awt.event.ActionListener {
    /*
     * 这一部分是因为我把界面和动作分开成两个类来写了才需要进行对象的传递如果动作和界面在一个对象中写的话就不需要传入对象了
     */
    View v=new View();//先定义一个View对象在切换界面的时候会使用到
    public ViewAction(View v)//将外界的View对象传入这个类里 
    {
        this.v=v;
    }
    public void actionPerformed(ActionEvent event)
    {
    Object object=event.getSource();//创建事件源对象
    switch(event.getActionCommand()){
    //如果按下视图1
    case "视图1":
        //这里之所以先创建新视图再关闭旧视图是因为反过来的话我们会发现延迟看上去会有一些难受
        new View().view();//new一个View类并调用里面的view函数
        v.setVisible(false);//关闭穿进来的那个类的视图
        break;
    //如果按下视图2
    case "视图2":
        new View().view2();
        v.setVisible(false);
        }
    }

}

主类部分代码:

public class Main {
    public static void main(String[] args) {
        View v=new View();
        v.view();
    }

}

运行效果:

运行主类后:

点击视图2后

点击视图1后

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们