要创建可滚动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);
}
}以下是上面代码段的结果。