Java Swing : Allow scroll when textfields are out out of range of scrollpane's view

标签 java swing user-interface jscrollpane

我有一个带有滚动 Pane scrlPnAddServer 的选项卡式 Pane tabbedPane_1,其视口(viewport) View 设置为 pnlAddServer。如何在滚动 Pane 的可视部分下方添加文本字段或其他项目。 (并允许用户向下滚动以查看项目)目前,项目在超出范围时不会显示。

        JTabbedPane tabbedPane_1 = new JTabbedPane(JTabbedPane.TOP);
        tabbedPane_1.setBounds(672, 20, 350, 400);
        panel.add(tabbedPane_1);
        JPanel tab = new JPanel();
        tabbedPane_1.add("Build", tab);
        tab.setLayout(null);
        JPanel tab2 = new JPanel();
        tabbedPane_1.add("More...", tab2);
        tab2.setLayout(null);

        JScrollPane scrlPnAddServer = new JScrollPane();
        scrlPnAddServer.setBounds(0, 0, 350, 370);
        tab2.add(scrlPnAddServer);
        scrlPnAddServer.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 

        JPanel pnlAddServer = new JPanel();
        pnlAddServer.setBounds(0, 0, 350, 370);
        scrlPnAddServer.setViewportView(pnlAddServer);
        pnlAddServer.setLayout(null);

然后我添加希望用户向下滚动查看的项目:

    tfSaveAs = new JTextField("Save As");
    tfSaveAs.setBounds(10, 600, 125, 20);
    pnlAddServer.add(tfSaveAs);
    tfSaveAs.setColumns(10);

最佳答案

利用适当的布局管理器,它能够计算使用 JScrollPane 所需的信息来决定是否应该显示滚动条。

这只是布局管理 API 提供的众多“自动神奇”方面之一

避免使用 null 布局,像素完美布局是现代 UI 设计中的一种幻觉。影响组件个体尺寸的因素太多,您无法控制其中任何一个。 Swing 的设计初衷是与布局管理器一起工作,放弃它们将导致无穷无尽的问题,您将花费越来越多的时间来尝试纠正

参见Laying Out Components Within a Container了解更多详情

关于Java Swing : Allow scroll when textfields are out out of range of scrollpane's view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36522456/

相关文章:

java - 为什么即使我重写 hashCode() 方法,containValue 方法也会返回 true?

java - JList:上一个选择的项目

java - 如何在 Swing 中实现倒计时器

javascript - 使用多个超链接作为提交和输入

java - Netbeans GUI 和 SQL 问题

java - 从 jsp 页面接收 'null' 值到 Struts 2 Action

java - Google 容易出错的 Java 编译器 - 默认错误模式?标记忽略?

java - 如何在 Linux 上从 java 文件中执行可执行文件?

java - 如何均匀化 JTable 中的组件大小?

c - MessageBox 在处理来自 DialogBox 的 WM_DESTROY 事件时不起作用