我的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);
答案 0 :(得分:3)
tablePanel.setLayout(null);
是导致问题的主要原因。 JScrollPane
有自己的布局管理器,用于管理滚动条,视图端口和标题。
tablePanel.add
是您的下一个问题,因为您不应该向JScrollPane
添加组件。相反,您应该设置JScrollPane
' JViewPort
。
但是,既然您正在使用JScrollPane tablePanel = new JScrollPane(jTable);
,那么实际上不需要跟随它的三条线。
我强烈建议你仔细看看:
现在,在你告诉我我之前没有提出任何建议之前,请重新阅读Laying Out Components Within a Container - 这是在Swing真正开始工作之前你需要理解和掌握的基石概念为你
答案 1 :(得分:1)
JScrollPane tablePanel = new JScrollPane(jTable);
// No need for the below code
/*tablePanel.setLayout(null);
tablePanel.add(jTableHeader);
tablePanel.add(jTable);*/
jFrame.setContentPane(tablePanel);