如何制作可滚动的JTable

时间:2013-01-27 01:57:13

标签: java mysql swing jtable jscrollpane

问题1)我有一个JPanel ps,它有一个null布局;一个JScrolPane scrollPane和一个JTable表。 我已将表添加到scrollPane,然后将scrollPane添加到Jpanel ps。以下是我执行此操作的代码: -

ps = new JPanel();
ps.setLayout(null);
ps.setSize(1000,600);

scrollPane = new JScrollPane();
scrollPane.setBounds(10, 119, 975, 300);
        scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
ps.add(scrollPane);

table = new JTable(data, columns);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
scrollPane.setViewportView(table);

应该创建一个带有水平滚动条的scrollPane,当列数增加时,无法在单个屏幕上处理,滚动条有助于显示内容。请参阅“AUTO_RESIZE_OFF”。

但是会发生的是,所有列的大小都是固定的(我不知道有多少个字符。所有列的宽度都相同。)。因此,列的名称不可完全查看。

我的问题是,是否可以增加所显示列的宽度,或显示所有具有自己宽度的列?另外,如何启用滚动?

2 个答案:

答案 0 :(得分:4)

  1. 是。见TableColumn。通常我过去所做的就是使用ResultSetMeta数据来构建列模型。有关详细信息,请查看How to use Tables
  2. 是的,但JTable可能会有些麻烦。请查看PrintingPrinting a JTable。如果你有时间看,有一些很好的例子。
  3. 在数据库端过滤数据总是更好。获得一组结果后,您想要过滤该组,可以使用其ResultSetMetaData来确定要分组的列。同样,如果您还没有结果,可以使用DatabaseMetaData来确定数据库中表的列

答案 1 :(得分:3)

  1. 关于您在问题1中的打印作业& 2:我建议您查看jasper report
  2. 对于你的问题3,我不知道你的数据库结构是什么,所以很难说,但看起来你正在寻找的是JTable中的行跨度。所以,试着看看google这样的事情