如何使用 GridLayout 和多个面板?

2024-04-13

如何使用多个JPanel容器使这段代码看起来像这样?

这是我的代码应该是什么样子的图像,但我无法弄清楚。 我只能用GridLayout, BorderLayout and FlowLayout。作为初学者,我们只了解了基本概念,但我需要更多帮助。

我也不允许使用GridBagLayout。我感谢所有的帮助。


解决复杂计算任务的常见策略是将其分解为小的、定义良好的可管理任务。分而治之。
这也适用于 gui:将设计分解为小的、易于布局的容器。
在这种情况下,请考虑将设计分为 3 个区域(JPanels) 嵌套在 main 中JPanel:

如果你不能使用GridBagLayout你可以使用底部面板BoxLayout.
BoxLayout对于主面板也是一个有效选项,以允许不同的子面板(顶部、中心、底部)高度。

Demo:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Lab1 extends JFrame
{
    public Lab1() {

        setDefaultCloseOperation(EXIT_ON_CLOSE);
        JPanel main = new JPanel(new GridLayout(3,1));
        //to allow different child-panels height use BoxLayout
        //BoxLayout boxLayout = new BoxLayout(main, BoxLayout.Y_AXIS);

        add(main);
        JPanel top = new JPanel(new GridLayout(1,3));
        main.add(top);
        top.add(getPanel(Color.RED));
        top.add(getPanel(Color.GREEN));
        top.add(getPanel(Color.BLUE));

        JPanel center = new JPanel(new GridLayout(1,4));
        main.add(center);
        center.add(getPanel(Color.YELLOW));
        center.add(getPanel(Color.CYAN));
        center.add(getPanel(Color.BLACK));
        center.add(getPanel(Color.LIGHT_GRAY));

        JPanel bottom = new JPanel();
        bottom.setLayout(new BoxLayout(bottom, BoxLayout.LINE_AXIS));
        main.add(bottom);

        bottom.add(getPanel(Color.PINK));
        JPanel rightPane =  getPanel(Color.MAGENTA);
        rightPane.setPreferredSize(new Dimension(900, 200));
        bottom.add(rightPane);

        pack();
        setVisible(true);
    }

    private JPanel getPanel(Color color) {
        JPanel panel = new JPanel();
        panel.setBackground(color);
        panel.setPreferredSize(new Dimension(300, 200));
        return panel;
    }

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

如何使用 GridLayout 和多个面板? 的相关文章

  • Java - 如何将特殊字符放入字符串中

    Java 似乎有很好的字符串处理能力 尽管如此 我还是遇到了最简单的问题 我需要动态字符串 它们在运行时更改 因此字符串类型不是一个好的选择 因为它们是不可变的 所以我使用字符数组 设置起来有点痛苦 但至少它们是可以修改的 我想创建一个字符
  • 位图内存不足错误

    我对这个错误有疑问 我从 URL 制作网站图标解析器 我这样做是这样的 public class GrabIconsFromWebPage public static String replaceUrl String url StringB
  • JavaFX 图像未在舞台中显示

    我尝试了很多次 尝试了很多方法 但都无法让自己的形象在舞台上如我所愿 我认为这可能与java寻找资源的路径有关 但我不确定 因为我刚刚开始使用视觉库 在本例中为JavaFX 这是我的目录结构 MyProject assets img myI
  • MongoTemplate upsert - 从 pojo 进行更新的简单方法(哪个用户已编辑)?

    这是一个简单的 pojo public class Description private String code private String name private String norwegian private String en
  • 手动编辑 Jar 以更改包名称

    我有一个来自外部源的 jar 文件 jar 中的所有类都位于 com xyz 包中 我想将所有类移动到 com xyzold 包中 这是否像解压缩 jar 将 xzy 文件夹重命名为 xyzold 并重新压缩它一样简单 或者我还需要修改每个
  • 如何在远程 WebSphere 上进行 JNDI 查找期间解决 sun/io/MalformedInputException

    我使用 WebSphere 8 5 来托管我的应用程序 并在应用程序服务器上配置了一些 JDBC 资源 我还使用瘦客户端运行时库开发了一个客户端应用程序 当按以下方式执行 JNDI 查找时 env put Context INITIAL C
  • 正则表达式获取字符串中的第一个数字和其他字符

    我是正则表达式的新手 想知道如何才能只获取字符串中的第一个数字 例如100 2011 10 20 14 28 55 在这种情况下 我希望它返回100 但该数字也可以更短或更长 我在想类似的事情 0 9 但它单独获取每个数字 100 2001
  • JTable 和 JScrollpane 大小的问题

    我有一个JScrollPane with a JTable在里面 在里面JTable我最初有 3 行 稍后添加行 默认JTable我的 3 行很难看 因为JScrollPane calls getPreferredScrollableVie
  • 线程“main”中的异常 java.lang.StackOverflowError

    我有一段代码 但我无法弄清楚为什么它在线程 main java lang StackOverflowError 中给出异常 这是问题 Given a positive integer n prints out the sum of the
  • 从 @JsonProperty 值获取枚举常量

    我有一个标有 JsonProperty 的枚举 用于使用 Jackson 进行 JSON 序列化 反序列化 并且希望获取给定字符串 JsonProperty 的枚举值 public enum TimeBucket JsonProperty
  • Jenkins 的代码覆盖率 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JSch中如何设置文件类型和文件传输模式?

    我使用 Apache Common NetFTPClient并设置了我的ftpClient在上传文件之前使用如下所示的方法 ftpClient setFileType FTP BINARY FILE TYPE ftpClient setFi
  • JavaFX - 为什么多次将节点添加到窗格或不同的窗格会导致错误?

    我现在正在学习基本的 JavaFX 我不明白我正在阅读的书中的这一说法 不 诸如文本字段之类的节点只能添加到一个窗格中一次 将节点添加到多次窗格或不同的窗格将导致运行时错误 我可以从书中提供的UML图看出它是一个组合 但我不明白为什么 库类
  • 使用 secp256r1 曲线和 SHA256 算法生成 ECDSA 签名 - BouncyCastle

    我正在尝试使用带有 secp256r1 曲线 P256 的 ECDSA 和用于消息哈希的 SHA256 算法生成签名 我也在使用 Bouncy Castle 库 下面的代码 public class MyTest param args pu
  • Java中的回调接口是什么?

    SetObserver 接口的代码片段取自有效的Java 避免过度同步第67条 public interface SetObserver
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • 摩尔斯电码 至 英语

    我现在的问题是让 摩尔斯电码转英语 正常工作 将英语转换为莫尔斯电码的第一部分工作正常 我知道以前已经有人问过这个问题 但我不知道我做错了什么 我知道我需要在某个地方进行拆分 但我只是不确定将其放在代码中的何处 现在 莫尔斯电码到英语的部分
  • Java:使用 Graph API 在线更新 Sharepoint 上的 docx 文件

    我在使用 Java 在线更新 Sharepoint 上的 docx 文件时遇到问题 首先 我检查了构建 PUT 请求的 URL 此处 并使用此请求 PUT drives drive id items item id content 我首先使
  • 为什么应该首选 Java 类的接口?

    PMD https pmd github io 将举报以下违规行为 ArrayList list new ArrayList 违规行为是 避免使用 ArrayList 等实现类型 而是使用接口 以下行将纠正违规行为 List list ne
  • 如何在不同版本的Google App Engine中使用自定义域名?

    我使用谷歌应用程序引擎作为我的 Android 和 Web 应用程序的服务器 我使用 Android Studio 开发了 Android 应用程序 并使用 Eclipse 开发了 Web 应用程序 我在应用程序引擎中部署了两个版本 第一个

随机推荐

  • TSQL 选择一行或多行进行连接

    这是类似于以下的问题 TSQL 按 2 个条件之一选择行 https stackoverflow com questions 10208849 tsql select rows by one from 2 conditions 但结果与我想
  • Java:如何创建 HTTP 浏览会话

    我正在尝试创建一个向服务器发送一些 POST 请求的 Java 应用程序 第一个请求是带有身份验证信息的请求 然后 当我发送下一个请求时 我得到的答案是我的会话已过期 但我在同一秒内发送下一个请求 所以它不能超时 所以我猜想 Java 中有
  • Twitter PHP API 应用程序访问直接消息权限?

    I have set my application permissions as read Write Direct Messages as shown in the figure 我已经保存了这些设置 But when i authent
  • 如何下载并安装 lint?

    有谁知道如何获取 Mac Windows 和 Linux 的 lint sudo port install lint找不到它 我只见过 BSD 的 lint 有splint http www splint org 但是 GPL lint 重
  • 如何列出Excel中三列中值的所有可能组合?

    我有三列 每一列都有不同类型的主数据 如下所示 现在 我想要这三个单元格的所有可能组合 就像 aa kk jj aa kk ff aa ll jj aa ll ff aa mm jj 这可以用公式来完成吗 我发现一个公式有 2 列 但我无法
  • Prism的RegionManager视图切换性能

    我正在对使用 PRISM 库编写的 WPF 应用程序进行性能分析 在此应用程序中 从一个视图导航到另一视图特别慢 尤其是在远离 重 视图时 注意 来回导航时视图会被缓存并且不会重新构造 PRISM 将所有视图保留在 SingleActive
  • 为什么要有移动语义?

    首先我要说的是 我已经阅读了有关移动语义的许多问题中的一些 这个问题不是关于如何使用移动语义 而是问它的目的是什么 如果我没有记错的话 我不明白为什么需要移动语义 背景 我正在实现一个重磅课程 就这个问题而言 它看起来像这样 class B
  • WooCommerce 购物车基于数量的折扣

    在 WooCommerce 中 如何根据购物车中的商品总数设置购物车折扣 例如 1 至 4 件商品 无折扣 5 至 10 件 5 11 至 15 件 10 16 至 20 件商品 15 21 至 25 件商品 20 26 至 30 件商品
  • 使用 Cassandra PasswordAuthenticator 时,DSE OpsCenter 最佳实践失败

    启用 Cassandra 的 PasswordAuthenticator 时 以下最佳实践检查将失败 搜索启用了错误自动提交的节点 启用查询结果缓存的搜索节点 搜索过滤器缓存错误的节点 我的数值符合推荐值 我已经确认 当我在 Cassand
  • 如何在iOS中绘制单点线

    我想知道绘制单点线的最佳方法是什么 我的目标是在 tableViewCell 中绘制这条线 使其看起来就像本机单元格分隔符 我不想使用原生分隔符 因为我想使用不同的颜色和不同的位置 不是底部 起初我使用 1px UIView 并将其着色为灰
  • 保护节点 Redis

    我正在尝试保护 Node Redis IPC 服务器以使用私钥 公钥 我已经关注了本教程 http bencane com 2014 02 18 sending redis traffic through an ssl tunnel wit
  • 如何在 C#、ASP .NET 中修改请求标头

    我正在开发 ASP NET mVC 项目 并且必须更改 HttpHeaders 请参阅下面的代码片段 WebRequest req HttpWebRequest Create myURL HttpWebResponse response H
  • 单击耳机按钮时应用程序崩溃

    我已经构建了一个部署在 android google playstore 中的音频播放器 我正在使用 crashlytics 来监控崩溃和 ANR 最近我遇到了很多 MediaButtonReceiver 崩溃的情况 耳机的咔嗒声在许多设备
  • 如何仅使用CSS和HTML实现带有标题+可滚动侧边栏+可滚动内容的应用程序布局[重复]

    这个问题在这里已经有答案了 我需要构建一个标准的 Web 应用程序 其中包含标题 左侧边栏 如果选项太多则可滚动 和内容大小合适 这是我的尝试 wrapper font size 14px height 100 width 100 marg
  • 使用MATLAB编写一个函数,在二维中实现牛顿法

    我正在尝试编写一个在二维中实现牛顿法的函数 虽然我已经做到了这一点 但我现在必须调整我的脚本 以便我的函数的输入参数必须是列向量 雅可比矩阵 中的 f x 的f x 最初的猜测x0以及函数的公差f x 及其雅可比矩阵位于单独的 m 文件中
  • 数组空指针异常? [复制]

    这个问题在这里已经有答案了 好的 我不明白为什么我的代码报告 NullPointerException 但我已经在这里呆了很长一段时间试图弄清楚它 And no files is not null 编辑 这是我的一个错误 它是空的 我没有看
  • 去掉 Eclipse 生成的serialVersionUID上面的注释

    这已经成为我的一个烦恼 我写一个类 并实现Serializible 然后日食警告我说我没有serialVersionUID 所以我选择 添加生成的serialVersionUID or 添加默认的serialVersionUID 我最终得到
  • Base 64 或 MD5 哪种加密方法最好?

    我目前正在使用 MD5 加密将密码存储在数据库中 我们之前没有密码重置功能 但现在我们正在实施它 所以我无法解密MD5并将密码发送给用户 但如果它是用 base64 加密的 我就可以做到 现在我有点困惑哪种是最好的加密方法 我已经对强密码进
  • Visual Studio 2017 在加载解决方案时挂起

    我有一个包含 4 个项目的解决方案 一个 NET Framework 项目 Ananas 两个 NET Core项目 香蕉和樱桃 一个 Xamarin 项目 露莓 每次我启动 Visual Studio 2017 Community 15
  • 如何使用 GridLayout 和多个面板?

    如何使用多个JPanel容器使这段代码看起来像这样 这是我的代码应该是什么样子的图像 但我无法弄清楚 我只能用GridLayout BorderLayout and FlowLayout 作为初学者 我们只了解了基本概念 但我需要更多帮助