Java Swing (BoxLayout) 对齐问题

2023-11-30

我对 Java Swing 非常陌生,在获得良好的布局方面遇到了很多问题。我已经查看了谷歌,甚至该网站上的其他答案,但我发现没有任何信息似乎可以解决该问题。这是我努力的结果:

enter image description here

正如您所看到的,标签、文本字段和按钮都没有对齐。我的目标是让它们都具有相同的左边框,按钮和文本字段具有相同的右边框,这些左边框和右边框与左边框和右边框的距离相同我的窗户两侧。

以下是我的代码的重要部分:

    public void run()
    {
         JFrame frame = new JFrame("Arduino Server");
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         InstancePanel = new ServerGUIPanel();
         frame.getContentPane().add(InstancePanel);
         frame.pack();
         frame.setVisible(true);
    }

并且,在 ServerGUIPanel.java 中:

    public ServerGUIPanel()
    {
        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        setPreferredSize(new Dimension(500, 500));
        setBorder(new EmptyBorder(10, 10, 10, 10));



        StatusLabel = new JLabel("STATUS: BOOTUP");
        add(StatusLabel);

        PortField = new JTextField();
        PortField.setPreferredSize(new Dimension(5000, 20));
        PortField.setMaximumSize(PortField.getPreferredSize());
        PortField.setActionCommand("PortChanged");
        add(PortField);

        ConnectionButton = new JButton();
        ConnectionButton.setPreferredSize(new Dimension(5000, 20));
        ConnectionButton.setMaximumSize(ConnectionButton.getPreferredSize());
        ConnectionButton.setActionCommand("ConnectionClicked");
        add(ConnectionButton);
    }

有人对此有一个简单的解决方案吗?我在这里做错了什么?

非常感谢!

——乔治·奥茨·拉森


阅读 Swing 教程中的部分如何使用 BoxLayout有关使用 BoxLayout 的基础知识以及有关对齐问题的部分。

基本上,您需要确保所有组件的alignmentX值设置为左对齐。

Also:

  1. 不要使用 setPreferredSize() 来设置组件的大小。每个 Swing 组件都会确定其自己的首选大小。
  2. 使用 Java 命名约定。变量名称不应以大写字符开头。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Swing (BoxLayout) 对齐问题 的相关文章

随机推荐

  • CSS、嵌套 div 和边距与填充

    我完全理解盒子模型 这个问题更多的是试图确定关于何时使用边距和何时使用填充的语义方法 这是一个典型的例子 首先 用简单的英语来说 情况 我们有一个容器div 里面有一个段落元素 目标 在 div 内部和段落外部之间有 12px 的空间 选项
  • C# Windows Universal 10 TopMost 窗口

    我正在开发一个 Windows 10 通用应用程序 UWP 是否可以将应用程序设置为 TopMost 始终位于顶部 喜欢WPF or Winforms 最上面的属性 Thanks Creators Update 中添加了一项名为 Compa
  • 映射两个列表[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我最近问了一个关于使用apply函数作用于两个列表 每
  • 什么 SQL 查询或视图将显示“动态列”

    我有一个数据表 我允许人们向该表添加元数据 我为他们提供了一个界面 允许他们将其视为向存储数据的表添加额外的列 但实际上我将数据存储在另一个表中 Data Table DataID Data Meta Table DataID MetaNa
  • CSS 元素恢复默认样式

    CSS 中有没有一种快速的方法来删除应用于元素的所有样式 例如 假设某种选项卡菜单 div class outer div div div div div div div div div CSS 应用 outer foo blee bar
  • 自定义地图功能 - 它是如何工作的?

    对于不清楚的主题标题 我深表歉意 我在计划中有这个函数 它是map功能 它工作得很好 但我在试图理解它时迷失了方向 define my map proc ls letrec iter lambda proc ls0 if null ls0
  • C++ 使用多个分隔符分解字符串[重复]

    这个问题在这里已经有答案了 可能的重复 C 中通过多个分隔符将字符串拆分为单词 我目前正在尝试读取一个文件 其中每行都有不同的制表符和空格 用于分隔需要插入二叉树中的关键属性 我的问题是 如何仅使用 STL 使用多个分隔符分割一行 在一天的
  • document.elementFromPoint(x,y) 获取 iframe 内的元素

    我试图获取 html 页面中的元素 我使用 document elementFromPoint x y 来检测输入元素 当没有 iframe 时它工作正常 但在 iframe 内部 它在这段代码中不起作用 html如下 我错过了什么吗 di
  • RequireJS 未加载名为“module.js”的文件或模块

    我刚刚开始使用 RequireJS 我尝试了一个简单的代码 但一种方法有效 但另一种方法无效 文件夹 script 有 main js module js require js 在 main js 中 requirejs module fu
  • 克隆控件 - C# (Winform) [重复]

    这个问题在这里已经有答案了 可能的重复 是否可以复制某个控件的所有属性 C 窗口窗体 我必须创建一些类似于设计时创建的控件的控件 创建的控件应该具有与预定义控件相同的属性 或者换句话说 我想复制一个控件 有没有一行代码可以达到这个目的 或者
  • 快速屏蔽圆段

    I m creating a simple player app There is a circle that shows a progress of playing a song 在 Swift 中绘制这个圆圈并制作蒙版的最佳方法是什么
  • 获取当前类的typedef

    我目前正在将 boost intrusive ptr 与我的 GUI 类一起使用 虽然这或多或少是一个方便的问题 但是否有正确的方法来获取当前类的类型名 我问的原因是我有一个用于定义不同指针类型的宏 define INTRUSIVE PTR
  • Python - 从 Selenium 中 ::before 伪元素上的 CSS 属性“content”获取文本?

    我正在尝试抓取一些元素并返回网页上显示的文本 我相信我可以通过 css selectors 和 xpaths 很好地找到元素 但我无法返回所需的文本 下面是我的程序 from selenium import webdriver from s
  • 使用 LoginButton 监听 Facebook 注销。 (4.1)

    我一直在阅读 但尚未找到解决方案 所以就这样吧 我正在尝试升级到 Facebook 的新 SDK 4 1 Android SDK 我可以使用以下代码使用 Facebook 的 LoginButton 成功登录用户 facebookLogin
  • pip install 中的方括号是什么意思?

    我看到越来越多的命令是这样的 pip install splinter django 这些方括号有什么作用 您使用的语法是 pip install project extra 就你而言 你是installing the splinter软件
  • Go SQL 驱动程序获取接口{}列值

    我正在尝试使用 go sql 驱动程序从数据库表中读取数据 并将这些值转换为 map string interface 列名是映射的键 值是interface 我将所有列添加到一个数组中 我正在使用 RawBytes 的代码示例 位于htt
  • 从 WiFi 传感器读取 RSSI

    请帮助我如何用 Java 编写代码来读取 WiFi 传感器的接收信号强度指示器 我尝试使用套接字编程来做到这一点 但我所有的尝试都没有得到我想要的 现在我正在查看 J2me 我可能会得到很好的答案 但我发现我可能需要一些建议 谢谢 您使用的
  • 为什么这个 GLUT 程序无法编译?我缺少库或标头吗?

    我刚刚开始使用 Linux Mint 11 最近我决定将 OpenGL 编程作为一种爱好 我发现代码和技术相对简单 但是 我很难尝试将所有资源放在正确的位置 代码是 include
  • 内容解析器notifyChange()不工作

    我已经设置了一个片段来使用 CursorLoader 从自定义内容提供程序中提取数据 问题是 当我使用内容解析器更新 SQLite 表中的记录时 光标不会刷新 即getContext getContentResolver notifyCha
  • Java Swing (BoxLayout) 对齐问题

    我对 Java Swing 非常陌生 在获得良好的布局方面遇到了很多问题 我已经查看了谷歌 甚至该网站上的其他答案 但我发现没有任何信息似乎可以解决该问题 这是我努力的结果 正如您所看到的 标签 文本字段和按钮都没有对齐 我的目标是让它们都