ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java Swing 绝对布局 如何不用多面板 而实现板块化设计

2020-06-11 19:03:58  阅读:305  来源: 互联网

标签:初始化 Java int private param Swing new 面板 JButton


Java Swing 绝对布局 如何不用多面板 而实现板块化设计

成员属性

这里的成员属性主要看下 JLable部分,和 JButton部分,至于 JTable部分还有其他的 DefaultTableModel那个是表格的部分,不是本文的重点,可以忽略,窗体和监听也不重要,因为本文主要介绍的是布局的方便

/*----------------------------Member---------------------------*/
	private InformationFrame systemFrame;//窗口
	
	private JLabel page = new JLabel();//页码
	
	private JButton addBtn = new JButton("添加");
	private JButton deleteBtn = new JButton("删除");
	private JButton modifyBtn = new JButton("修改");
	private JButton prePageBtn  = new JButton("上一页");
	private JButton nextPageBtn  = new JButton("下一页");
	
	private JButton searchBtn  = new JButton("搜索");
	private JLabel countryLabel = new JLabel("国家:");
	private JTextField countryTextFile = new JTextField();
	
	private SystemBtnActionListen btnListen;
	private DefaultTableModel novelTableModel = new DefaultTableModel();
	private JTable novelTable = new JTable();//表格
	private JScrollPane scrollPane = new JScrollPane(novelTable);//滚动面板
	//页码显示,其他部分控制
	private int totalPage = 1;//总页数
	private int currentPage = 1;//当前页数
	private int informationCount = 0;//总信息量
	private  int everyPage = 10;//每页几条
	private String currentCountry = "";//当前搜索的国家

调用配置模块

总共有四个部分的配置,第一个是面板的基本配置,第二个是上面部分按钮和搜索的配置,中间是表格的配置,下面是翻页按钮的配置,这里给定的两个数值,其实就是在布局时根据位可进行调整。坐标点为板块的左上角坐标

	public InformationPanel(InformationFrame systemFrame) {
		this.systemFrame = systemFrame;//传入窗口
		basicInit();//基本配置
		upInit(20,50);//上面部分初始化
		midInit(10, 100);//中间部分初始化
		downInit(350, 620);//下面部分初始化
	}

BasicInit

面板的基本配置,是将面板配置大小,配置绝对布局,最后一行是创建监听。

/**
	 * 
	 * 
	 * @describe 基本配置
	 */
	private void basicInit()
	{
		setSize(PanelSize.SYSTEM_WIDTH, PanelSize.SYSTEM_HEITH);//设置大小
		setLayout(null);//设置绝对布局
		btnListen = new SystemBtnActionListen(systemFrame);//按钮监听初始化
	}

UpInit

按钮部分和搜索部分板块的代码,传入的参数是这些按钮总体所在的位置
这个部分的 initBtn 是初始化按钮的方法,这样设计的目的是由于一个工程或说一个面板都会有很多的按钮需要初始化,所以我把他封装成一个方法,每次需要初始化我只需要传参就可以。传哪些参数会在后面的方法代码部分进行介绍。
unitInt方法是初始化一个标签加一个输入框的位置,后面同样会具体介绍

	/**
	 * 
	 * @param x 面板基点
	 * @param y
	 * @describe 上面部分初始化,传入该板块位置
	 */
	private void upInit(int x,int y)
	{
		//初始化按钮
		initBtn(addBtn,"add",0,0,x,y);
		initBtn(deleteBtn,"delete",UnitSize.BTN_WIDTH+UnitSize.BTN_SPACE,0,x,y);
		initBtn(modifyBtn,"modify",2*(UnitSize.BTN_WIDTH+UnitSize.BTN_SPACE),0,x,y);
		//搜索部分
		unitInit(countryLabel, countryTextFile, 3*(UnitSize.BTN_WIDTH+UnitSize.BTN_SPACE)+100, y);
		initBtn(searchBtn,"search",3*(UnitSize.BTN_WIDTH+UnitSize.BTN_SPACE)+280+100,0,x,y);
	}

midInit

/**
	 * 
	 * @param x 面板基点
	 * @param y
	 * @describe 中间部分初始化,传入该板块位置
	 */
	private void midInit(int x,int y)
	{
		scrollPane.setBounds(x, y, PanelSize.SYSTEM_WIDTH-2*x, 500);//设置滚动面板大小
		novelTable.setModel(novelTableModel);//传入tablemodel	
		add(scrollPane);//添加滚动面板
		columnInit(novelTableModel);//添加列名
	}

downInit

/**
	 * 
	 * @param x 面板基点
	 * @param y
	 * @describe 下面部分初始化,传入该板块位置
	 */
	private void downInit(int x,int y)
	{
		initBtn(prePageBtn, "prePage", 0, 0, x, y);
		int pageWid = 100;
		page.setBounds(x+UnitSize.BTN_WIDTH, y, pageWid, UnitSize.BTN_HEITH);
		page.setFont(new Font(null,Font.BOLD,18));
		page.setHorizontalAlignment(JLabel.CENTER);
		add(page);
		//new PageViewThread(page,novelTableModel).start();//开启页码更新
		initBtn(nextPageBtn, "nextPage", UnitSize.BTN_WIDTH+pageWid,0, x, y);
	}

重点介绍 initBtn

这里第一个肯定是传进要初始化的按钮,第二个参数是command,当点击时标识是那个按钮被点击,btnX,btnY是按钮在相对面板基点的位置,后面两个参数是面板基点位置,只要把传进板块的基点位置直接传过来就行了

/**
	 * 
	 * @param btn
	 * @param command
	 * @param btnX 按钮在板块中的位置
	 * @param btnY
	 * @param x 面板基点
	 * @param y
	 * @describe 按钮初始化
	 */
	private void initBtn(JButton btn,String command,int btnX,int btnY,int x,int y)
	{
		btn.setLocation(btnX+x, btnY+y);//设置按钮位置
		btn.setSize(UnitSize.BTN_WIDTH, UnitSize.BTN_HEITH);//设置大小
		btn.setFont(new Font(null,Font.BOLD,18));//设置字体
		btn.setActionCommand(command);//设置点击命令
		btn.addActionListener(btnListen);//添加监听
		add(btn);//添加到面板
	}

JLabel标签和输入框的初始化

为什么把这两个放在一起,当然是因为输入框,正常情况下,都会告知这个输入框,或者下拉框是选择什么,因此把这两者放在一起,仔细看,传参时,第二个参数既不是JComboBox也不是JTextFile,而是他们的父类JComponent,这样更通用,可以应用于输入框,也可以是下拉框或者其他。

/**
	 * 
	 * @param label
	 * @param component
	 * @param x
	 * @param y
	 * @describe 初始化行
	 */
	private void unitInit(JLabel label ,JComponent component,int x ,int y)
	{
		int width = 80;//lebel
		int height = 40;
		label.setBounds(x, y, width, height);//设置位置
		label.setFont(new Font(null,Font.BOLD,18));//设置字体
		add(label);
		component.setBounds(x+width, y, 200, height);//设置位置
		component.setFont(new Font(null,Font.BOLD,18));//设置字体
		add(component);
	}

那本次的分享,其实就到这边来,最后在放几张效果图,有兴趣的可以看下

如图可以看到,我将其分为这三个板块,如果你想更改他们的位置,只需要更改极坐标,就可以移动整个板块。
在这里插入图片描述

自我感觉还算nice,如果觉得还行的话点个赞吧

标签:初始化,Java,int,private,param,Swing,new,面板,JButton
来源: https://blog.csdn.net/qq_39150049/article/details/106655033

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有