首先,這是針對學校項目的,所以我無法上傳我的完整代碼。我們得到了一個空白項目,并被要求為其添加功能。我希望能夠在各種表格中顯示來自服務器的數據,每個表格都在一個單獨的選項卡中,每個“頁面”都可以選擇向表格中添加,編輯或刪除記錄。由于我有很多不同的表,所以我寫了一個父類Page,它將包含一個表和一些JPanels,如果需要,我可以向其中添加按鈕。但是,每當我嘗試將JTable添加到Page時,它都會在選項卡之間導致不可預測的行為 - 請注意,無論我是否使用TableModel,都會發生這種情況。我嘗試使用標簽來顯示組件應該在的位置,這工作正常,但是使用實際的表格會導致占位符標簽和頂部的選項卡被隱藏。帶有標簽的選項卡,用于說明組件應位于何處我嘗試添加JTable后的選項卡 - 其余的代碼(包括其他占位符標簽)是相同的我沒有對線程做任何事情,所以當我嘗試添加我的JTable時,我不知道應用程序發生了什么。這是 Page.java 的代碼:我使用以下代碼將新頁面添加到我的選項卡系統:JTabbedPane tabs = new JTabbedPane();tabs.add("A", new Page(new String[]{"A"}));tabs.add("B", new Page(new String[]{"B"}));tabs.add("C", new Page(new String[]{"C"}));tabs.add("D", new Page(new String[]{"D"}));String[] 是我要顯示的列的名稱 - 請注意,一旦我讓表正常工作,這些列將被替換為實際有用的名稱。任何想法我做錯了什么?我嘗試過使用ChangeListener事件重新繪制我的框架,但這似乎沒有任何作用。謝謝!編輯其中包括代碼的完整版本。對 Page 使用上面的代碼,并在 Main 類中使用它:import java.awt.*;import javax.swing.*;public class Main { public static void main(String[] args) { JFrame window = new JFrame("Components and Containers"); window.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE) ; window.setSize(800,600); Container pane = window.getContentPane(); JTabbedPane tabs = new JTabbedPane(); tabs.add("A", new Page(new String[]{"A"})); tabs.add("B", new Page(new String[]{"B"})); tabs.add("C", new Page(new String[]{"C"})); tabs.add("D", new Page(new String[]{"D"})); pane.add(tabs); window.setVisible(true); }}我嘗試將表格添加到滾動面板,只有當您將鼠標懸停在其上時,表格才會變得可見。選項卡仍未正確顯示。將表添加到單獨的 ScrollPanel 而不是直接添加到組件的結果。
1 回答

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
您的表模型類在行/列排序方面不一致。
在構造函數中,您編寫
data=new Object[names.length][0];
這意味著第一個索引是列號,第二個索引是行號。
但是,在訪問數據(在 中 ,)時,您可以以另一種方式使用 indizes:getValueAt
setValueAt
data[rowIndex][columnIndex]
還有,這個:
public int getRowCount() { return data.length; }
將列計數返回為行計數,這意味著只要 JTable 嘗試調用 ,您就會得到 一個。ArrayIndexOutOfBoundsException
getValueAt(0, 0)
若要解決此問題,應使用以下命令初始化構造函數中的數據數組:
data=new Object[0][names.length];
添加回答
舉報
0/150
提交
取消