簡體   English   中英

使用JScrollPane時Java Swing JTable不顯示滾動條

[英]Java swing JTable doesn't show scroll bar when using JScrollPane

我有一個tablePanel ,它是一個JScrollPane ,並使用JTable了初始化,而JTable使用了defaultTableModel進行了初始化。當我嘗試向表中添加一些行,但沒有看到滾動條時,希望得到任何答復。

JFrame jFrame = new JFrame();

//rows will be added dynamically.
DefaultTableModel defautTableModel = new DefaultTableModel(null,columnNames){
  @Override
  public boolean isCellEditable(int row, int column) {
    return false;
  }
};

JTable jTable = new JTable(defautTableModel);
jTable.setLocation(20,60);
jTable.setSize(950,450);
jTable.setRowHeight(25);

jTable.getColumn("No.").setMaxWidth(45);
jTable.getColumn("position").setMaxWidth(45);
...

JTableHeader jTableHeader = jTable.getTableHeader();
jTableHeader.setLocation(20,30);
jTableHeader.setSize(950,30);
jTableHeader.setFont(new Font(null, Font.BOLD, 16));
jTableHeader.setResizingAllowed(true);
jTableHeader.setReorderingAllowed(true);

JScrollPane tablePanel = new JScrollPane(jTable);
tablePanel.setLayout(null);
tablePanel.add(jTableHeader);
tablePanel.add(jTable);

jFrame.setContentPane(tablePanel);

tablePanel.setLayout(null); 是您問題的主要原因。 JScrollPane有其自己的布局管理器,該管理器用於管理滾動條,查看端口和標題。

tablePanel.add是您的下一個問題,因為您不應該向JScrollPane添加組件。 相反,您應該設置JScrollPaneJViewPort

但是,由於您使用的是JScrollPane tablePanel = new JScrollPane(jTable); ,實際上不需要緊隨其后的三行。

我強烈建議您仔細看一下:

現在,在您告訴我我建議的內容實際上沒有任何作用之前,請重新閱讀在容器中放置組件的知識 -這是您在Swing真正開始為您工作之前需要了解和掌握的基本概念

JScrollPane tablePanel = new JScrollPane(jTable);

// No need for the below code

/*tablePanel.setLayout(null);

tablePanel.add(jTableHeader);

tablePanel.add(jTable);*/

jFrame.setContentPane(tablePanel);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM