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后

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信