如何在 Swing 中左对齐和右对齐组件?

2024-04-07

我有一个看似简单的问题。我有一些标签想要向左对齐,但是当我调整大小时,它们开始向中间漂移。这将打乱我计划添加的其他组件的对齐。我该怎么做才能让它们保持在左边?

这是简短、简单的代码,不确定我的问题是什么:

package com.protocase.notes.views;

import com.protocase.notes.model.Note;
import com.protocase.notes.model.User;
import java.awt.Component;
import java.util.Date;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.BevelBorder;

/**
 * @author dah01
 */
public class NotesPanel extends JPanel{

    public NotesPanel(Note note){
        this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
        JLabel creatorLabel = new JLabel("Note by "+note.getCreator()+ " @ "+note.getDateCreated());
        creatorLabel.setAlignmentX(JLabel.LEFT_ALIGNMENT);
        creatorLabel.setHorizontalAlignment(JLabel.LEFT);


        JTextArea notesContentsArea = new JTextArea(note.getContents());
        notesContentsArea.setEditable(false);
        JScrollPane scrollPane = new JScrollPane(notesContentsArea);

        JLabel editorLabel = new JLabel(" -- Last edited by "+note.getLastEdited() +" at "+note.getDateModified());
        editorLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
        editorLabel.setHorizontalAlignment(JLabel.LEFT);

        this.add(creatorLabel);
        this.add(scrollPane);
        this.add(editorLabel);
        this.setBorder(new BevelBorder(BevelBorder.RAISED));
    }


    public static void main(String[] args) {
        JFrame frame = new JFrame("Notes Panel");
        Note note = new Note();
        User user = new User();
        user.setFirstName("d");
        user.setLastName("h");
        user.setUserID("dah01");
        note.setCreator(user);
        note.setLastEdited(user);
        note.setDateCreated(new Date());
        note.setDateModified(new Date());
        note.setContents("A TEST CONTENTS");
        NotesPanel np = new NotesPanel(note);

        JScrollPane scroll = new JScrollPane(np);
        frame.setContentPane(scroll);
        np.setVisible(true);
        frame.setVisible(true);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

如果您想对齐面板中的内容,则必须对齐所有内容。你忘记对齐你的JScrollPane。如果您将此行添加到您的代码中,则应该为您修复对齐方式:

    scrollPane.setAlignmentX(JScrollPane.LEFT_ALIGNMENT);

你的新构造函数会是什么样子:

public NotesPanel(Note note){
    this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
    JLabel creatorLabel = new JLabel("Note by "+note.getCreator()+ " @ "+note.getDateCreated());
    creatorLabel.setAlignmentX(JLabel.LEFT_ALIGNMENT);
    creatorLabel.setHorizontalAlignment(JLabel.LEFT);


    JTextArea notesContentsArea = new JTextArea(note.getContents());
    notesContentsArea.setEditable(false);
    JScrollPane scrollPane = new JScrollPane(notesContentsArea);
    scrollPane.setAlignmentX(JScrollPane.LEFT_ALIGNMENT);

    JLabel editorLabel = new JLabel(" -- Last edited by "+note.getLastEdited() +" at "+note.getDateModified());
    editorLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
    editorLabel.setHorizontalAlignment(JLabel.LEFT);

    this.add(creatorLabel);
    this.add(scrollPane);
    this.add(editorLabel);
    this.setBorder(new BevelBorder(BevelBorder.RAISED));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Swing 中左对齐和右对齐组件? 的相关文章

  • 外部硬件指纹扫描仪和 Android 设备集成

    我想建立一个android像员工考勤这样的应用程序使用fingerprint scanner 我想知道 是否可以使用外部硬件设备进行指纹识别 扫描 如何将Android应用程序与外部硬件finger集成 打印扫描设备 如何从外部硬件设备获取
  • JavaFx ComboBox 绑定混乱

    我有一个 I18N 实现 它通过属性绑定 JavaFX UI 元素 例如 def translateLabel l Label key String args Any Unit l textProperty bind createStrin
  • 在 Java 构建过程中更改常量的最佳方法

    我继承了一个在 Tomcat 下运行的 Java 应用程序 servlet 由于历史原因 根据应用程序的部署位置 本质上是品牌问题 代码具有不同的 外观和感觉 选项 有几个常量控制这个品牌过程 它们具有不同的功能 不应压缩为单个常量 即 B
  • 访问 java jigsaw 模块中的资源文件[重复]

    这个问题在这里已经有答案了 我正在尝试从项目中的类访问 Eclipse 项目中的文件 我需要将该项目声明为 jigsaw 模块才能从其他项目访问它 但是通过这样做 我无法再访问项目中的 example png 等文件 这是我的项目结构 pr
  • java IO将一个文件复制到另一个文件

    我有两个 Java io File 对象 file1 和 file2 我想将 file1 的内容复制到 file2 有没有一种标准方法可以做到这一点 而无需我创建一个读取 file1 并写入 file2 的方法 不 没有内置方法可以做到这一
  • Clojure Web 应用程序 - 我从哪里开始?

    最近我一直在研究 Clojure 我喜欢这门语言 我想看看我是否可以在其中制作一个小型网络应用程序 只是为了挑战自己 但是 我完全没有设置任何与 Java 相关的 Web 应用程序的经验 事实上 我对 Java 并没有太多的经验 我从哪说起
  • 适当支持不区分大小写的映射

    我想实现一个不区分大小写的哈希映射 这个问题本身并不新鲜 但我想添加额外的功能 但不知道要采取什么总体方向 我希望客户能够做这样的事情 boolean preserve case true Map
  • 如何使用 apache commons cli 指定多个选项?

    我想要这样的东西 java programName jobs1 C 10 W 20 java programName job2 java programName job3 含内容 Option o1 new Option job2 some
  • 正则表达式的替代(流畅?)界面设计

    我刚刚看到了一个巨大的 Java 正则表达式 这让我对正则表达式的一般可维护性进行了一些思考 我相信大多数人 除了一些糟糕的 Perl 贩子 都会同意正则表达式很难维护 我正在考虑如何解决这种情况 到目前为止 我最有希望的想法是使用流畅的界
  • 获取运行时提供的类名的 n 维数组的类

    给定一个完全限定的类名和多个维度 我想获取该类的类名 我相信我可以这样做 public Class elementType Class forName className return Array newInstance elementTy
  • 如何使用spring data mongodb在mongodb中创建视图

    如何使用spring data mongodb在mongodb中创建视图 谢谢 您可以在需要的地方注入 org springframework data mongodb core MongoTemplate 类型的 bean 并使用其方法之
  • 带有 CONTAINS 查询的PreparedStatement

    我有一个查询需要连续运行 28000 次 所以我认为使用准备好的语句可能是一个聪明的主意 这是我的查询 String requestWithFirstName SELECT SE ELEMENT ID SE LASTNAME SE FIRS
  • 如何在 groovy 中将输出重定向到 stderr?

    我正在寻找一种将 groovy 脚本中的输出重定向到 stderr 的方法 catch Exception e println Want this to go to stderr 就在我的脑海中 你不能做一些自我接线吗 def printE
  • 如何将捕获的图像写入/粘贴到文档文件?

    我有一个场景 我需要捕获图像并将它们一个接一个地写入到一个word文件中 我已经编写了下面的代码 但似乎不起作用 请帮忙 Robot robot try robot new Robot BufferedImage screenShot ro
  • FEST-swing 示例不起作用,frame.isShowing() 返回 false

    尝试使用 FEST Swing 进行 Swing GUI 测试 并使用来自http easytesting org swing wiki pmwiki php n FEST Swing LaunchFromMain http easytes
  • 使用服务器 java api 从 jasperserver 存储库检索资源

    我正在尝试使用其 java API 从 Jasperserver 存储库检索资源 根据jasper 报表服务器终极指南 https community jaspersoft com documentation jasperreports s
  • java:验证 GUI 中的所有文本字段是否已完成

    我正在尝试创建一个允许某人设置帐户的 GUI 我想验证按下创建帐户按钮时所有文本字段是否完整 做这个的最好方式是什么 我正在附加我的代码 但我对文本字段是否完整的验证不起作用 参见下面的代码 public class GUIaccounts
  • jstack 是否停止在较新的 JDK8 版本上工作?

    我惊讶地发现 不知何故 最近 jstack 停止了在较新的 JDK 8 上的工作 我不确定这发生在哪个版本 但我确实得到 36649 Unable to open socket file target process not respond
  • 如何提高QNX6下Eclipse IDE的性能

    我们在 VMWare 环境中通过 QNX6 运行 Eclipse 速度非常慢 Eclipse 是这样启动的 usr qnx630 host qnx6 x86 usr qde eclipse eclipse data root workspa
  • 确定方法调用顺序的接口设计模式

    我想创建一个具有多种方法的 Java 接口 但我希望界面的用户只能按照我定义的顺序或顺序调用方法 例如buyTicket 不应在此之前调用reserveTicket 问 有没有设计模式或任何关于如何做到这一点的提示 我考虑过 A 接口被包装

随机推荐

  • Eclipse 图形布局不显示任何内容

    I am doing a mobile application on Eclipse and once I re installed my Android SDK after installation something odd happe
  • Twitter Bootstrap:使表单输入和按钮与 Chrome 和 Firefox 中的高度相同

    Using Twitter 引导程序 2 3 2 http twitter github io bootstrap base css html forms我有一个input append form
  • 操作栏溢出不显示

    我正在为 Sherlock 设置一个带有 3 个项目 图标的操作栏 在 ICS 模拟器上运行时 我只能看到 2 个图标 而且 没有溢出菜单 那三个点图标 如果我按手机的菜单按钮 我只会看到第三个图标 我是否必须强制使用溢出图标 如果是的话我
  • 如何在 Objective-C 中包装 C++ 库?

    我有一个 C 库 仅限 h 其中包含数据结构的实现 我想在我的 iPhone 应用程序中使用它 首先 我用 Objective C 编写了一个包装器作为一个类 通过组合 它具有 C 类的 ivar 然后我 有义务 将包装类扩展更改为 mm
  • Angular 的过滤器问题

    明确地说 我对 Angular 上的过滤器有一个大的小问题 附加过滤器的输入搜索 如果你看到这个例子 这正是我想要的 http plnkr co edit FJ45nV6gdwp3SkRglPeW p preview 实际上 我用我的应用程
  • 使用自然键的 Django loaddata 未查询正确的外键

    这是我的问题 我正在尝试加载一些与另一个模型具有自然键关系的数据 我修改了父模型以生成自然键 我使用以下命令从旧数据库导出数据 manage py dumpdata resources image n indent 4 gt images
  • 如何使用 Python 与 ChatGPT 聊天?

    我要求 ChatGPT 向我展示如何使用 OpenAi 的 API 在终端窗口中与其进行交互 它生成了代码 我对其进行了一些修改 以便完成我想要的操作 这是Python代码 import requests with open api key
  • 将 cellpadding 添加到 Java JTable

    我正在尝试实现 Swing JTable 我按照教程进行操作http docs oracle com javase tutorial uiswing components table html simple http docs oracle
  • 如何使用 RequireJS 构建多个页面

    如何使用RequireJS构建多个页面 就像下面的示例一样 在 app js 中声明每个类是正确的做法吗 有每个 html 文件来声明 我想避免的是当用户到达网站的第一页时加载所有脚本 main js 定义所有外部依赖项 require b
  • 如何为图像中的每个对象着色不同的颜色

    我遇到以下问题 我有黑白图像 我必须对其进行着色 图像中的每个白色 斑点 代表一个对象的实例 我想用新颜色为每个对象着色 但对于每个图像我想使用相同的颜色方案 例如 第一张图片 3 个对象 gt 使用的颜色 红色 绿色 黄色 第二张图片 2
  • Android SDK 管理器未安装组件

    不确定我在这里做错了什么 我安装了 Android SDK Manager 现在正在尝试安装 Android Dev 网站建议的平台 单击安装后 我收到一条错误消息 指出管理器无法在 Android 目录中创建临时文件夹 所以我创造了它 现
  • 创建一个用于切换 jQuery 选项卡的“下一步”按钮

    如何创建一个滚动到下一个 jQuery 选项卡的按钮 我希望选项卡中有一个下一个按钮 可以滚动到下一个选项卡 有点像分步教程 如何才能做到这一点 到目前为止我的代码如下 HTML div ul li a href fragment 1 sp
  • 使用 MVVM 时将事件放在哪里?

    我应该将所有事件放在视图代码后面还是有更合适的方法 例如将命令放在 ViewModel 中 例如 我想在双击数据网格行时打开选项卡 我应该在哪里处理这个事件 不 你不应该将事件放在代码后面 在MVVM 模型 视图 视图模型 设计模式中 视图
  • 从另一个包导出的函数

    我正在按照以下说明进行操作https golang org doc code html Workspaces https golang org doc code html Workspaces链接 我构建了我的第一个 Go 程序 所以 我尝
  • 通过号码确定信用卡类型?

    是否可以仅根据信用卡号来确定信用卡类型 这是推荐的还是我们应该始终询问客户他们使用的信用卡类型 我用谷歌搜索了一下 发现了这个算法 http cuinl tripod com Tips o 1 htm http cuinl tripod c
  • jquery datepicker 多个实例

    我制作了一个 RequestForQuote 表格 在其中我可以添加新职位以获取 RFQ 基本上 在我的例子中 通过 PHP 可以很容易地完成这一点 工作真的很好 您可能想看一下 可以在以下位置找到 我的网站 http www thermo
  • Angular 和 google 距离矩阵没有访问控制标头

    我越来越 XMLHttpRequest 无法加载 请求中不存在 Access Control Allow Origin 标头 资源 在我的角度应用程序中 我向 google 距离矩阵发出了 http 请求 如下所示 var url http
  • 如何不断提示输入直到有效?

    我试图做到这一点 以便当给定的答案既不是 1 也不是 2 时 显示消息 请输入有效答案 出现了 又回到了问题 这是我的代码 Coloration ConsoleColor DarkMagenta What do you want to do
  • 迭代对象属性

    var obj name Simon age 20 clothing style simple hipster false for var propt in obj console log propt obj propt 变量如何propt
  • 如何在 Swing 中左对齐和右对齐组件?

    我有一个看似简单的问题 我有一些标签想要向左对齐 但是当我调整大小时 它们开始向中间漂移 这将打乱我计划添加的其他组件的对齐 我该怎么做才能让它们保持在左边 这是简短 简单的代码 不确定我的问题是什么 package com protoca