You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将窗口底部的滚动条移至JTable正下方?

解决JScrollPane滚动条未置于JTable正下方的问题

我来帮你搞定这个滚动条位置不对的问题!你遇到的情况是因为JFrame默认使用BorderLayout布局,当你直接把JScrollPane添加到窗口的CENTER区域时,布局管理器会把JScrollPane拉伸至填满整个窗口,导致滚动条贴在窗口底部,而不是紧跟在JTable的下方。

这里有两种简单的修复方案:

方案一:改用FlowLayout布局

把JFrame的布局改成FlowLayout,这样JScrollPane会保持自身的首选大小,滚动条就会乖乖待在JTable正下方了:

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.awt.FlowLayout;

public class Test {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setLayout(new FlowLayout()); // 设置FlowLayout布局
        frame.setSize(400, 300);
        JTable table = new JTable(10, 20);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        JScrollPane scrollPane = new JScrollPane(table);
        frame.add(scrollPane);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 加上关闭窗口时退出程序的逻辑
        frame.setVisible(true);
    }
}

方案二:用JPanel包裹JScrollPane

如果需要保留BorderLayout,可以把JScrollPane放到一个JPanel里,再把JPanel添加到窗口中,这样JPanel会自适应JScrollPane的大小,避免滚动条被拉伸到窗口底部:

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JPanel;
import java.awt.BorderLayout;

public class Test {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setSize(400, 300);
        JPanel panel = new JPanel(); // 创建JPanel作为容器
        JTable table = new JTable(10, 20);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        JScrollPane scrollPane = new JScrollPane(table);
        panel.add(scrollPane);
        frame.add(panel, BorderLayout.CENTER);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

另外还有个小技巧:如果你不需要固定窗口大小,可以去掉frame.setSize(400,300),改用frame.pack(),这样窗口会自动调整到刚好适配组件的大小,滚动条自然就会出现在JTable的正下方啦。

内容的提问来源于stack exchange,提问作者Marco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:20:10