[英]Doesn't show scroll in JScrollPane with JTable after Upgrade Java 7 to Java 8
[英]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
添加組件。 相反,您應該設置JScrollPane
的JViewPort
。
但是,由於您使用的是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.