前言
最近整理java的学习笔记,在不起眼的角落处发现了这个搁置已久的swing快捷工具(黑历史)。
早期在学习swing的时候,尚且不知道有可视化swing开发工具,感觉GUI界面的开发十分的繁琐,打算开发一个swing快捷工具,提供快速布局、快速绑定样式、快速绑定监听、以及功能更强大的默认组件(自带滚动条的文本框,自带分页的表格等)。
因为学习周期过快,各种想法几乎都没有实现。在整理java学习笔记的时候,发现了这个小工具(姑且称之为工具😂😂),便想着整理出一点接口出来也算是完成当时的初心。
源码链接:GitHub - jiang-ruo/XLO-swing: 在学习swing时写的一些方便的swing小工具
什么是Swing
Swing是一个为JAVA设计的GUI工具包,是JAVA基础类的一部分。Swing是基于AWT的图形界面工具,采用纯JAVA实现,不依赖 各个平台的图形界面,对跨平台的支持十分出色。
Swing 与 AWT的区别
-
AWT是基于本地方法的C/C++程序,Swing是基于AWT的Java程序。
-
运行速度:AWT > Swing
-
Swing的各个控件跨平台表现相同,AWT的控件基于各个平台的各自的风格。
工具包介绍
批量便捷摆放组件;
设置组件的字体与圆角;
表格组件:带有分页及滚动条;
批量绑定按钮与事件的工具;
// 该工具类用于便捷放置组件的位置,同时将组件的Layout设为null
class XLO.Swing.Util.LayoutNUllUtil {
/**
* @param panel 组件将要绑定的面板
* @param e 需要放置的组件
* @param x 绑定的位置
* @param y 绑定的位置
* @param width 组件的长度
* @param height 组件的高度
*/
public static void addElement(Container panel, Component e, int x, inty, int width, int height);
/**
* @param e 需要放置的组件
* @param x 绑定的位置
* @param y 绑定的位置
* @param width 组件的宽度
* @param height 组件的高度
*/
public void addElement(Component e, int x, inty, int width, int height);
/**
* 批量添加组件,
* @param x_offset 控件和上一个控件X方向的偏移量
* @param y_offset 控件和上一个控件Y方向的偏移量
* @param x 第一个组件的位置
* @param y 第一个组件的位置
* @param width 所有组件的宽度
* @param height 所有组件的高度
* @param es 传入组件
*/
public void addElement(int x_offset, int y_offset, int x, int y, int width, int height, Component... es);
}
// 设置组件字体大小及圆角
// TODO: 用于快捷设置组件的各种属性
class XLO.Swing.Util.SetUIUtil {
/**
* 批量设置组件的字体大小,字体默认为Font.PLAIN
* @param size 字体
* @param assembly 需要设置字体的组件
*/
public void setFontSize(int size, JComponent... assembly);
/**
* 批量设置控件的字体属性
* @param font
* @param assembly
*/
public void setFontSize(Font font, JComponent... assembly);
/**
* 设置组件的圆角,圆角弧度默认为XLO.Swing.Assembly.XLOBorder中的设置
* @param assembly
*/
public void setRoundBorders(JComponent... assembly);
/**
* 批量设置控件的边框属性
* @param border
* @param assembly
*/
public void setRoundBorders(Border border, JComponent... assembly);
/**
* 批量设置控件的边框属性
* @param arch 角度
* @param assembly
*/
public void setRoundBorders(int arch, JComponent... assembly);
}
// 表格分页组件
// 表格基类,生成的表格带有滚动条
class XLO.Swing.Assembly.XLOTableModel {
/**
* 设置表头。
* @param title
*/
public void setHeader(String... title);
/**
* 设置表格中的显示内容
* @param rows
*/
public void show(ArrayList<Object[]> rows);
/**
* 绑定鼠标点击事件
*/
public void addTableMouseListener(MouseListener listener);
/**
*
* @return 返回选中行的行数
*/
public int getSelectedRow();
/**
* 获取选中行的内容
* @return 返回Object数组。
*/
public Object[] getSelectRowInfo();
/**
* 设置表格的行高。
* @param height
*/
public void setRowHeight(int height);
/**
* 设置每列的列宽
* @param widths
*/
public void setColWidth(int... widths);
}
// 表格分页组件
// PS:现在看来该组件的功能极度不健全,姑且添加以下带办事项(ε=ε=ε=┏(゜ロ゜;)┛逃)
// TODO:添加表格内容缓冲区,将每次添加的内容记录到缓冲区。
// TODO:保存总数据量。
// TODO:设置页码信息后重新计算总页码数量。
class XLO.Swing.Assembly.XLOTableModel {
/**
* @param header 设置表头
*/
public XLOPageTable(String[] header);
/**
* 用于在确定数据量但没有数据的情况下显示表格信息
* 调用该方法前需要设置表格每页数量,默认值为每页5条数据
* @param total
*/
public void setPage(int total);
/**
* 表格当前页显示的信息。
* @param list
*/
public void setShowInfo(ArrayList<Object[]> list);
/**
* 上一页
* @return
*/
public boolean previous();
/**
* 下一页
* @return
*/
public boolean next();
/**
* @return 总页码数量
*/
public int getPage();
/**
* @return 获取当前页码
*/
public int getCurrentPage();
/**
* @param currentPage 设置当前页码
*/
public void setCurrentPage(int currentPage);
/**
* @return 每页显示个数
*/
public int getNum();
/**
* 设置每页显示数量
*/
public void setNum(int num);
}
// 批量边界绑定组件的工具
class XLO.Control.ButtonClickAction{
/**
* 给一个按钮绑定监听
* @param btn 按钮
* @param command 点击按钮后getActionCommand的值
*/
public void setCommand(AbstractButton btn, String command);
/**
* 多个按钮绑定监听,传入的按钮及command必须一一对应
* @param btns 按钮
* @param commands 点击按钮后getActionCommand的值
*/
public void setCommand(AbstractButton[] btns, String[] commands)
}
// 带有连点保护的command控制器
class XLO.Control.ButtonAction;
后记
虽然XLO-swing中只有寥寥无几的工具,但是以如今的角度看待这些工具,也是存在许多不足。发表并整理出接口文档以供大家参考。
源码链接:GitHub - jiang-ruo/XLO-swing: 在学习swing时写的一些方便的swing小工具
更多推荐
(一) JAVA Swing:Swing快捷开发工具集-v0.01
发布评论