 | npcTableModel = new DefaultTableModel(new String[]{"ID", "名稱", "IMPL"}, 0) {
public boolean isCellEditable(int r, int c) { return false; }
};
npcTable = new JTable(npcTableModel);
npcTable.setRowHeight(22);
npcTable.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) selectNpc();
}
});
DatabaseHelper.loadNpcData(npcTableModel);
p.add(new JScrollPane(npcTable), BorderLayout.CENTER);
這個代碼看起來應該會自動加載。可能問題在於:
1. DatabaseHelper 的數據庫連接有問題
2. SQL 查詢沒有返回數據
3. tabbedPane 切換的時候沒有觸發
讓我檢查一下其他面板是否也有類似的問題。我注意到在 createQuestEditPanel() 中調用了這些查詢面板,但可能 tabbedPane 切換時沒有重新加載。
我需要確保切換到 NPC 查詢分頁時能夠重新加載數據。可能的解決方案是添加一個 ChangeListener 來監聽分頁切換事件,當選中 NPC 查詢分頁時自動調用 loadNpcData() 方法。這樣可以確保每次切換到 NPC 查詢頁面都能獲取最新的 NPC 數據。
→ Read questeditor\QuestEditor.java [limit=30, offset=80]
← Edit questeditor\QuestEditor.java
tabbedPane.addTab("任務編輯", createQuestEditPanel());
tabbedPane.addTab("NPC 查詢", createNpcSearchPanel());
tabbedPane.addTab("道具查詢", createItemSearchPanel());
tabbedPane.addTab("怪物查詢", createMonsterSearchPanel());
tabbedPane.addChangeListener(e -> {
int selectedIndex = tabbedPane.getSelectedIndex();
if (selectedIndex == 2 && npcTableModel.getRowCount() == 0) {
DatabaseHelper.loadNpcData(npcTableModel);
} else if (selectedIndex == 3 && itemTableModel.getRowCount() == 0) {
DatabaseHelper.loadItemData(itemTableModel);
} else if (selectedIndex == 4 && monsterTableModel.getRowCount() == 0) {
DatabaseHelper.loadMonsterData(monsterTableModel);
}
});
loadQuests();
JPanel bottom = new JPanel(new FlowLayout(FlowLayout.RIGHT));
| |