Java Swing实战(五)表格组件JTable(1)

java

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);

}

}

效果如图:

以上是 Java Swing实战(五)表格组件JTable(1) 的全部内容, 来源链接: utcz.com/z/390893.html

回到顶部