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);
}
}
效果如圖: