JScrollPane中的JTable:禁用滚动条的最佳高度 [英] JTable inside JScrollPane: best height to disable scrollbars
本文介绍了JScrollPane中的JTable:禁用滚动条的最佳高度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用以下代码在 JScrollPane
中创建 JTable
以显示列标题
I am using the following code to create JTable
inside JScrollPane
to 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);
问题是我需要为<$ c计算高度 $ c> JScrollPane 所以可以看到整个 JTable
并且 JScrollBar
s不会出现。我该怎么做?
The problem is that I need to compute a height for JScrollPane
so the whole JTable
can be visible and JScrollBar
s won't appear. How can I do that?
num
从2变为4,如果是4,则会出现滚动条。 width
已修复。
num
changes from 2 to 4 and if it is 4 then scroll bars appear. width
is fixed.
推荐答案
基本方法是
- JTable是一个Scrollable,遗憾的是在计算prefScrollable方面做得不好,所以你必须自己做。
- 要么使用一个LayoutManager来布局所有的pref(fi FlowLayout),要么在JTable中实现max(如果你使用调整大小但是最大的管理者像BoxLayout那样)
- JScrollPane是一个validationRoot,因此重新验证必须在scrollPane的父级上发生
类似于:
final JTable table = new JTable(10, 5) {
@Override
public Dimension getPreferredScrollableViewportSize() {
Dimension dim = super.getPreferredScrollableViewportSize();
// here we return the pref height
dim.height = getPreferredSize().height;
return dim;
}
};
final JComponent content = new JPanel();
content.add(new JScrollPane(table));
Action add = new AbstractAction("add row") {
@Override
public void actionPerformed(ActionEvent e) {
((DefaultTableModel) table.getModel()).addRow(new Object[]{});
content.revalidate();
}
};
这篇关于JScrollPane中的JTable:禁用滚动条的最佳高度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文