【发布时间】:2012-12-07 21:49:22
【问题描述】:
我正在使用以下代码在JScrollPane 内创建JTable 以显示列标题
JTable won't show column headers
String[] columnNames = {"header1", "header2", "header2", "header3"};
Object[][] data = new Object[num][4];
//feed values into data using for
JTable chart = new JTable(data, columnNames);
chart.setShowVerticalLines(false);
chart.setEnabled(false);
chart.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane sp = new JScrollPane(chart);
sp.setPreferredSize(new Dimension(width, chart.getHeight() + 5));
panel.add(sp);
问题是我需要为JScrollPane 计算一个高度,以便整个JTable 可见,而JScrollBars 不会出现。我该怎么做?
num 从 2 变为 4,如果是 4,则出现滚动条。 width 已修复。
【问题讨论】:
-
永远不要使用 setXXSize ,这样做总是是错误的。相反,让表格将其 prefScrollable 实现为合理的(f.i. JXTable 从其 visibleRows 属性计算高度)并使用合适的 LayoutManager。
-
@kleopatra,所以我需要某种
getHeight,它为加载的数据提供了首选大小 -
@Nikolay Kuznetsov
JScrollPane用于将更大的区域减少到可滚动的JViewport,然后必须决定可见行table.setPreferredScrollableViewportSize(new Dimension(width, 12 * rowHeight))的max number,JTable.AUTO_RESIZE_OFF的宽度必须是硬编码的,或者你必须从ColumnModel计算重量,发疯,发疯,发疯,getPreferredScrollableViewportSize来自water,没有别的 -
@mKorbel,我称之为
chart.setPreferredScrollableViewportSize(new Dimension(width, num * chart.getRowHeight()));,但它似乎将高度值提高了两倍。 -
@Nikolay Kuznetsov 我稍后会详细说明,(@kleopatra) 和 (@camickr) 和
get/setPreferredSize的答案之间的外显,
标签: java swing jtable size jscrollpane