JTable与水平滚动条
有没有办法在必要时启用水平滚动条?
情况是这样的:我有一个JTable
,其中一个单元存储了很长的数据。 因此,我需要有水平滚动条。
任何人有这个想法?
首先,将您的JTable
添加到JScrollPane
并设置滚动条存在的策略:
new JScrollPane(myTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
然后,指出您的JTable不能通过设置AUTO_RESIZE_OFF
模式自动调整列的大小:
myJTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
在jTable
的属性中将AutoResizeMode
设置为OFF
作为参考,这里是一个接受的方法的最小例子 。 此外,
-
您可以调整各个栏的大小,如设置和更改栏宽以及这里和这里所示 。
-
您可以调整封闭的滚动窗格的整体大小,如实现滚动精明的客户端以及此处和此处所示 。
import java.awt.Dimension; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; /** * @see https://stackoverflow.com/a/37318673/230513 */ public class Test { private void display() { JFrame f = new JFrame("Test"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); TableModel model = new AbstractTableModel() { private static final int N = 32; @Override public int getRowCount() { return N; } @Override public int getColumnCount() { return N; } @Override public Object getValueAt(int rowIndex, int colIndex) { return "R" + rowIndex + ":C" + colIndex; } }; JTable table = new JTable(model) { @Override public Dimension getPreferredScrollableViewportSize() { return new Dimension(320, 240); } }; table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); f.add(new JScrollPane(table)); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Test()::display); } }
对我来说,它的作品:
table.setAutoscrolls(真);