Java Swing实战(五)表格组件JTable(1)
程序员文章站
2022-07-06 11:46:04
dbPanel面板的配置告一段落。 接下来配置taskPanel 面板。 / @author: lishuai @date: 2018/11/26 13:51 / public class WeimingSyncApplets { public static void main(String[] a ......
dbpanel面板的配置告一段落。
接下来配置taskpanel 面板。
/** * @author: lishuai * @date: 2018/11/26 13:51 */ public class weimingsyncapplets { public static void main(string[] args) { // 面板组件 jpanel taskpanel = new jpanel(); jpanel dbpanel = new jpanel(); jtabbedpane tabbedpane = buildjtabbedpane(taskpanel, dbpanel); buildframe(tabbedpane); } private static jtabbedpane buildjtabbedpane(jpanel taskpanel, jpanel dbpanel) { // 选项卡面板 jtabbedpane tabbedpane = new jtabbedpane(); // 通过borderfactory来设置边框的特性 tabbedpane.setborder(borderfactory.createemptyborder(10, 10, 10, 10)); tabbedpane.add("执行任务", taskpanel); tabbedpane.add("数据源配置", dbpanel); // 创建面板容器 jpanel tablepanel = new jpanel(); // 设置borderlayout布局方式 tablepanel.setlayout(new borderlayout()); // 创建表格 jtable table = configtable(); // 使用普通的中间容器添加表格时,表头 和 内容 需要分开添加 tablepanel.add(table.gettableheader(), borderlayout.north); tablepanel.add(table, borderlayout.center); // 将容器放入taskpanel面板 taskpanel.add(tablepanel); return tabbedpane; } private static jtable configtable() { // 创建 table jtable table = gettable(); // 获取 model defaulttablemodel model = gettablemodel(); table.setmodel(model); for (int i = 0; i < model.getrowcount(); i++) { // 获得表格的值 string taskname = (string) model.getvalueat(i, 0); // 设置表格的值 model.setvalueat(taskname + "执行时间:" + i + "分钟后", i, 2); } int[] columnwidth = {135, 165, 350, 150, 150, 100}; for (int i = 0; i < columnwidth.length; i++) { // 设置表格各栏各行的尺寸 table.getcolumnmodel().getcolumn(i).setpreferredwidth(columnwidth[i]); } return table; } private static jtable gettable() { jtable table = new jtable() { @override public void updateui() { // 刷新 super.updateui(); // 表格行高 setrowheight(36); } @override public boolean iscelleditable(int row, int column) { // 第3列、第4列设置可以编辑,其余列不可编辑 if (column != 4 && column != 5) { return false; } return true; } }; // 设置表头不可移动 table.gettableheader().setreorderingallowed(false); // 一次只能选择一项 table.setselectionmode(single_selection); return table; } private static defaulttablemodel gettablemodel() { int rowcount = 4; object[] columnnames = {"任务名称", "执行规则", "任务执行时间", "状态", "操作", "sql"}; object[][] rowdata = new object[rowcount][columnnames.length]; // 向表格中填充数据 for (int i = 0; i < rowcount; i++) { for (int j = 0; j < columnnames.length; j++) { switch (j) { case 0: rowdata[i][j] = "任务" + i; break; case 1: rowdata[i][j] = "0 0 0/" + i + " * * ? "; break; default: rowdata[i][j] = null; } } } return new defaulttablemodel(rowdata, columnnames); } private static void buildframe(jcomponent component) { // 窗体容器 jframe frame = new jframe("数据同步工具"); frame.add(component); // jframe.exit_on_close 退出 // jframe.hide_on_close 最小化隐藏 frame.setdefaultcloseoperation(jframe.hide_on_close); // 设置布局 frame.getcontentpane().setlayout(new borderlayout()); frame.getcontentpane().add(borderlayout.center, component); // 设置窗口最小尺寸 frame.setminimumsize(new dimension(1060, 560)); // 调整此窗口的大小,以适合其子组件的首选大小和布局 frame.pack(); // 设置窗口相对于指定组件的位置 frame.setlocationrelativeto(null); frame.setvisible(true); // 设置窗口尺寸是否固定不变 frame.setresizable(true); } }
效果如图:
上一篇: Atomic原子操作原理剖析