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(真);