Java swing制作小程序的多个页面,把公共的部分(如菜单栏)放在一起,怎么实现点击菜单栏中的一个选项就关闭当前窗体打开另一个窗体?

版权声明:博客知识产权来源命运的信徒,切勿侵权 https://blog.csdn.net/qq_37591637/article/details/86568678

Java swing制作小程序的多个页面,把公共的部分(如菜单栏)放在一起,怎么实现点击菜单栏中的一个选项就关闭当前窗体打开另一个窗体?


如果是在一个页面中,实现关闭当前窗体,打开另一个窗体,是很容易做到的;不会的,可以看这一篇博客https://blog.csdn.net/qq_37591637/article/details/86554250

但是,如果制作小程序的多个页面,由于是一套系统,肯定有公共的部分,为了后期的便利维护,肯定要把公共的部分放在一起,如菜单栏,点击菜单中某一个选项的时候,虽然另一个窗体被打开了,但是当前的窗体却没有关闭,原有的代码视乎不起作用了?

怎么办呢?

公共的部分:就是一个程序多个页面的公共部分

窗口2:就是要打开的窗体

窗口1:要关闭的当前窗体

 核心代码如下

jm是组件的名称,可以是按钮可以是菜单项,可以是标签等等

jm.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				//1、获得想要销毁页面的窗体	
				JFrame js=new IndexPage().firtPage();
				// 销毁窗体
				js.dispose();
				// 打开一个新的页面
				new FirstPage().firtPage();
			}
		});

以下是一个实例,测试已经成功!


 公共的部分是以下这样的

代码如下

CommonPart.java

package cn.com.swing;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class CommonPart {
	/*
	 * author:命运的信徒 date:2019/1/21 arm:swing公共的部分代码放在这里,以便于维护
	 */
	public static JFrame common() {
		// 1.设置窗体大小和标题
		JFrame jf = new JFrame("矿井管理系统");
		jf.setPreferredSize(new Dimension(700, 700));
		// 2.设置关闭窗口就是关闭程序
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 最精准的布局模式空布局
		jf.setLayout(null);
		// 设置定位
		JLabel jl = new JLabel("矿井平硐位移监测系统", JLabel.CENTER);
		jl.setPreferredSize(new Dimension(680, 30));
		jf.add(jl);
		jl.setBounds(0, 0, 690, 30);
		jl.setFont(new Font("宋体", Font.BOLD, 24));
		jl.setForeground(Color.decode("#375a7f"));
		// 菜单栏
		// 新建一个菜单条
		JMenuBar jb = new JMenuBar();
		jf.add(jb);
		jb.setBounds(0, 40, 690, 30);
		jb.setBackground(Color.decode("#65991a"));
		// 新建一个菜单选项
		JMenu jmenu = new JMenu("首页");
		jmenu.setPreferredSize(new Dimension(100, 30));
		jmenu.setForeground(Color.white);
		jb.add(jmenu);
		// 新建一个菜单项
		JMenu jmenu0 = new JMenu("平硐位移");
		jmenu0.setPreferredSize(new Dimension(100, 30));
		jmenu0.setForeground(Color.white);
		jmenu.setPreferredSize(new Dimension(100, 30));
		jmenu.setForeground(Color.white);
		jb.add(jmenu0);
		// 新建一个菜单项
		JMenuItem jm = new JMenuItem("卷扬室");
		JMenuItem jmi = new JMenuItem("配电室");
		JMenuItem jmi0 = new JMenuItem("平硐");
		JMenuItem jmi1 = new JMenuItem("-240米");
		JMenuItem jmi2 = new JMenuItem("-290米以上水平");
		JMenuItem jmi3 = new JMenuItem("-290米水仓");
		jmenu0.add(jm);
		jmenu0.add(jmi);
		jmenu0.add(jmi0);
		jmenu0.add(jmi1);
		jmenu0.add(jmi2);
		jmenu0.add(jmi3);
		// 新建一个菜单选项
		JMenu jmenu1 = new JMenu("更多");
		jmenu1.setForeground(Color.white);
		jmenu1.setPreferredSize(new Dimension(100, 30));
		jb.add(jmenu1);
		// 新建一个菜单项
		JMenuItem jm0 = new JMenuItem("退出程序");
		JMenuItem jm1 = new JMenuItem("技术教程");
		jmenu1.add(jm0);
		jmenu1.add(jm1);
		// 卷扬室连接
		// 开始监听事件
		jm.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				//1怎么获取当前页面		
				// 销毁当前页面
				JFrame js=new IndexPage().firtPage();
				js.dispose();
				// 打开一个新的页面
				new FirstPage().firtPage();
			}
		});
		// 3.设置窗体可见
				jf.pack();
				jf.setVisible(true);
		return jf;
	}

}

运行IndexPage.java程序,点击菜单栏平硐位移-卷扬室,就会执行销毁当前窗体,打开另一个窗体

 


目标窗体

FirstPage.java

 

package cn.com.swing;
import java.awt.Font;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import cn.com.crud.SelectData;

public class FirstPage {
	/*
	 * author:命运的信徒 arm:程序的初始页面 date:2019/1/19
	 */
	public static void firtPage() {
		JFrame jf=CommonPart.common();
		// 以下是显示位移的地方
		JLabel jl1 = new JLabel("平硐位移");
		jl1.setFont(new Font("宋体", Font.BOLD, 20));
		jf.add(jl1);
		jl1.setBounds(130, 100, 100, 30);
		// 查询数据库
		SelectData sl = new SelectData();
		String vy = sl.selectInfo("3");
		JLabel jl2 = new JLabel(vy);
        
		jl2.setFont(new Font("宋体", Font.BOLD, 20));
		jf.add(jl2);
		jl2.setBounds(230, 100,300, 30);
		// 放置图片
		JLabel jl3 = new JLabel(new ImageIcon("WebRoot/img/sight1.png"));
		jf.add(jl3);
		jl3.setBounds(0, 150, 700, 500);
	}

	public static void main(String[] args) {
		firtPage();
	}
}

猜你喜欢

转载自blog.csdn.net/qq_37591637/article/details/86568678