我有一个 tablePanel
,它是一个 JScrollPane
,并用 JTable
初始化,JTable
初始化为a 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 有自己的布局管理器,用于管理滚动条、 View 端口和标题。
tablePanel.add
是您的下一个问题,因为您不应该向 JScrollPane
添加组件。相反,您应该设置 JScrollPane
的 JViewPort
。
但是,由于您使用的是 JScrollPane tablePanel = new JScrollPane(jTable);
,因此实际上不需要后面的三行。
我强烈建议您仔细查看:
现在,在你告诉我我所建议的一切实际上都不起作用之前,请先重新阅读 Laying Out Components Within a Container - 这是在 Swing 真正开始为您工作之前您需要理解和掌握的基础概念
关于Java swing JTable 在使用 JScrollPane 时不显示滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48059240/