使用滚动条动态显示面板的布局

2024-01-19

在java中,我一直在尝试创建一个可以接受其他带有滚动条的面板的面板。

我尝试使用网格布局,这工作得很好,除了如果我只添加几个面板,它会增长这些面板以适应父面板的大小。

我尝试使用 flowlayout,但这使得面板水平流动,因为有滚动条。

我该如何制作才能将面板添加到从顶部开始的父面板,并使它们始终具有相同的尺寸(或其首选尺寸)。

此外,当我在事件发生后将面板添加到父面板时,直到我移动或调整表单大小后,它们才会出现。我该如何让它重新喷漆?对其调用 repaint() 不起作用。


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

/** This lays out components in a column that is constrained to the
top of an area, like the entries in a list or table.  It uses a GridLayout
for the main components, thus ensuring they are each of the same size.
For variable height components, a BoxLayout would be better. */
class ConstrainedGrid {

    ConstrainedGrid() {
        final JPanel gui = new JPanel(new BorderLayout(5,5));
        gui.setBorder(new EmptyBorder(3,3,3,3));
        gui.setBackground(Color.red);

        JPanel scrollPanel = new JPanel(new BorderLayout(2,2));
        scrollPanel.setBackground(Color.green);
        scrollPanel.add(new JLabel("Center"), BorderLayout.CENTER);
        gui.add(new JScrollPane(scrollPanel), BorderLayout.CENTER);

        final JPanel componentPanel = new JPanel(new GridLayout(0,1,3,3));
        componentPanel.setBackground(Color.orange);
        scrollPanel.add(componentPanel, BorderLayout.NORTH);

        JButton add = new JButton("Add");
        gui.add(add, BorderLayout.NORTH);
        add.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                componentPanel.add(new JTextField());
                gui.validate();
            }
        });

        Dimension d = gui.getPreferredSize();
        d = new Dimension(d.width, d.height+100);
        gui.setPreferredSize(d);

        JOptionPane.showMessageDialog(null, gui);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                ConstrainedGrid cg = new ConstrainedGrid();
            }
        });
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用滚动条动态显示面板的布局 的相关文章

随机推荐

  • 如何在 Eclipse 编辑器插件中显示语法错误

    如何在 Eclipse 编辑器插件中指示语法错误 例如 非法的标记序列 就像在 Eclipse Java 编辑器中一样 即通过红色蠕动下划线 滚动条上可以跳转到的红色标记以及解释性消息您将鼠标悬停在其中一个上吗 我正在为自定义文件格式 特别
  • 当子属性更改时如何触发 NgComponent 的更新

    我是 AngularDart 和 Dart 的完全初学者 我遵循了教程 但我似乎找不到答案 我有两个可以完美工作的 NgComponents
  • ggplot2——自动放大geom_smooth(使用coord_cartesian)

    geom smooth很棒 很大程度上是因为它平均了很多变化 然而 正因为如此 当它缩小时 很难看出它在 x 轴上的变化 我正在制作大约 1000 个我需要的图表ggplot2放大通过coord cartesian 然而 每个图表都有不同的
  • 使用时间选择器设置时间

    有两个编辑文本 单击编辑文本时间选择器应该弹出 如何使用时间选择器选择日期并在两个编辑文本中设置日期 我已经用谷歌搜索了 timepicker 但我不知道如何在单击 edittext 时启动时间选择器并且 设置时间 XML
  • Python:替换重音符号(é 到 e)、删除 [^a-zA-Z\d\s] 和 lower() 的有效方法[重复]

    这个问题在这里已经有答案了 使用Python 3 3 我想做以下事情 替换特殊字母字符 例如 e 锐号 和 o 带有基本字符的扬抑符 例如 从 到 o 删除除字母数字和字母数字之间的空格之外的所有字符 人物 转换为小写 这是我到目前为止所拥
  • pecl 安装以前的 php 版本

    我已将 MacBook 升级为 Mavericks 并破坏了我的开发环境 我现在遇到的问题是我的 pear pecl 仍然尝试安装我以前的 5 3 版本的 PHP 而不是版本 5 4 PHP版本 php v PHP 5 4 17 cli b
  • OSGi + 休眠

    数据库操作不是分散在四个 osgi 包中 而是全部执行略有不同的操作 我想创建一个 简单的 OSGi 包来负责所有持久性问题 我觉得这并不像听起来那么简单 因为 每个包都有唯一的类加载器 所以我真正感激的是如果有人知道此类问题的解决方案 我
  • 如何在 Rust 中对“选项”分配进行分组?

    我有一个代码块 需要一次分配多个可选变量 任何值出现的可能性都很小None 因此单独处理每个失败的案例并不是特别有用 目前我这样写支票 if let Some a foo a if let Some b foo b if let Some
  • 在 datagridview 中显示 Yes/NO 而不是 True/False

    datagridview以一种形式显示数据库表的内容 表类型的一列是布尔值 因此在datagridview中显示true false 但我想自定义它以显示是 否 你建议哪种方式 当谈到自定义格式时 我想到了两种可能的解决方案 1 手柄Cel
  • cakephp 3 用于关联数据的 queryBuilder

    我有2张桌子 Table 1 product prices id price description pack display created modified Table 2 payment infos id payer pay date
  • 如何将html保存到数据库字段

    我有一个小编辑器 http www leigeber com 2010 02 javascript wysiwyg editor 我的用户可以使用此编辑器的网页 我将 html 保存到我的数据库中 我在将此 html 保存到我的数据库时遇到
  • UICollectionView 中的多个部分

    我正在使用集合视图为我的医院构建一个 iOS 应用程序 但是 根据目的 我需要在专科诊所使用多个部分 如果只是 1 部分 我已经完成了代码 当我尝试将其分成 2 个部分时 它总是返回一个 nil 值 请检查我下面的代码 public fun
  • 什么是表分区?

    什么情况下我们应该使用表分区 一个例子可能会有所帮助 我们每天从 124 家杂货店收集数据 每天的数据都与其他日期完全不同 我们按日期对数据进行分区 这使我们能够更快地 因为oracle可以使用分区索引并快速消除所有不相关的天数 这还使备份
  • 如果嵌入需要正确的大括号嵌套,如何在 Ace 编辑器中进行嵌入突出显示?

    考虑以下 Razor 代码 div Model GetSomething div 显然 只有考虑到所有括号 才能正确识别 Razor 块 如果我进行朴素嵌入 基于 PHP 的做法 var RazorLangHighlightRules fu
  • 在 GGplot2 中使用 Geom_Bar

    So I m trying to use geom bar in ggplot2 and all of the cases that I see of people demonstrating it online are of compar
  • C# - C 互操作性

    问答位于链接文本 https stackoverflow com questions 3726829 writing a dll in c c for net interoperability非常接近我正在寻找的内容 但我刚刚开始使用 C
  • 电子邮件中的图像:链接还是嵌入?

    我注意到我收到的几乎所有电子邮件都没有嵌入图像 而是从 http 链接它们 当然它们会被默认阻止 我正在为我的服务发送 HTML 电子邮件 并且可以轻松嵌入图像以创建更好的视觉体验 有什么特别的理由不这样做吗 为什么其他人都使用链接而不是嵌
  • `##` 和 `hashCode` 有什么区别?

    方法之间有什么区别 and hashCode 无论哪个类别或哪个类别 它们似乎都输出相同的值hashCode我使用的超载 谷歌也没有帮助 因为它找不到符号 的 子类 AnyVal不守规矩properly从哈希的角度来看 scala gt 1
  • UNIX下如何查看进程是否挂起

    我正在尝试恢复所有已暂停的进程 但我不知道如何检查进程是否已暂停 我尝试过 但它没有表明该进程是暂停还是运行 你可以使用 Ipor 的方式 proc
  • 使用滚动条动态显示面板的布局

    在java中 我一直在尝试创建一个可以接受其他带有滚动条的面板的面板 我尝试使用网格布局 这工作得很好 除了如果我只添加几个面板 它会增长这些面板以适应父面板的大小 我尝试使用 flowlayout 但这使得面板水平流动 因为有滚动条 我该