要创建可滚动JTable组件,我们必须使用JScrollPane作为的容器JTable。除此之外,我们还需要将表自动调整大小模式设置为,JTable.AUTO_RESIZE_OFF以便在需要时由滚动窗格显示水平滚动条。如果我们不关闭自动调整大小模式,则将调整表的列大小以适合可用的窗口大小。
package org.nhooo.example.swing; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.SwingUtilities; import javax.swing.WindowConstants; import java.awt.BorderLayout; import java.awt.Dimension; public class ScrollableJTable extends JPanel { public ScrollableJTable() { initializeUI(); } private static void showFrame() { JPanel panel = new ScrollableJTable(); panel.setOpaque(true); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.setTitle("Scrollable JTable"); frame.setContentPane(panel); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(ScrollableJTable::showFrame); } private void initializeUI() { setLayout(new BorderLayout()); setPreferredSize(new Dimension(400, 200)); JTable table = new JTable(20, 20); // 关闭JTable的自动调整大小,以便JScrollPane将显示水平 // 滚动条。 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); JScrollPane pane = new JScrollPane(table); add(pane, BorderLayout.CENTER); } }
以下是上面代码段的结果。