Java swing JTable 在使用 JScrollPane 时不显示滚动条

标签 java swing

我有一个 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 添加组件。相反,您应该设置 JScrollPaneJViewPort

但是,由于您使用的是 JScrollPane tablePanel = new JScrollPane(jTable);,因此实际上不需要后面的三行。

我强烈建议您仔细查看:

现在,在你告诉我我所建议的一切实际上都不起作用之前,请先重新阅读 Laying Out Components Within a Container - 这是在 Swing 真正开始为您工作之前您需要理解和掌握的基础概念

关于Java swing JTable 在使用 JScrollPane 时不显示滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48059240/

相关文章:

java - jsf(richfaces)只读输入文本验证

java - 如何从长方法中更新 swing GUI?

java - 使用 Mysql 数据库的搜索结果刷新 Jtable?

java - 如何检查 URL 中的搜索关键字

java - 从数据库读取时图像在 JPanel 中消失

java - 为Jbutton的图标设置不同的背景颜色

java - SwingWorker 在(不成功的)JLabel 图标更新时锁定 GUI

java - 如何记录剩余文档中的链接

java - 如何为字符数组传递 PreparedStatement setArray

java - 使用特定网络资源打开 URLConnection