亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 JTable 會導致應用程序的其余部分加載不正確

使用 JTable 會導致應用程序的其余部分加載不正確

慕桂英546537 2022-08-17 15:34:11
首先,這是針對學校項目的,所以我無法上傳我的完整代碼。我們得到了一個空白項目,并被要求為其添加功能。我希望能夠在各種表格中顯示來自服務器的數據,每個表格都在一個單獨的選項卡中,每個“頁面”都可以選擇向表格中添加,編輯或刪除記錄。由于我有很多不同的表,所以我寫了一個父類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:getValueAtsetValueAt

data[rowIndex][columnIndex]

還有,這個:

public int getRowCount() {
    return data.length;
}

將列計數返回為行計數,這意味著只要 JTable 嘗試調用 ,您就會得到 一個。ArrayIndexOutOfBoundsExceptiongetValueAt(0, 0)


若要解決此問題,應使用以下命令初始化構造函數中的數據數組:

data=new Object[0][names.length];


查看完整回答
反對 回復 2022-08-17
  • 1 回答
  • 0 關注
  • 80 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號