当 JLabel 的文本发生变化时,如何阻止 JLabel 改变其大小?

2023-12-31

我在代码中生成一些 JComponent 并使用 GridBag 布局来排列它们。我的布局由 12 行和 3 列组成,每行由一个 JSlider、一个 JCheckBox 和一个 JLabel 组成。这是我用来生成 UI 的代码:

final int NUM_MOTORS = 12;

// This is the panel I'm adding the components to.
pnlMotorSliders.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();

for (int i = 0; i < NUM_MOTORS; ++i) {
    c.gridy = i;

    // Create the slider
    JSlider slider = new JSlider(SwingConstants.HORIZONTAL, 10, 4085, 10);
    c.fill = GridBagConstraints.HORIZONTAL;
    c.gridx = 0;
    c.weightx = 0.9;
    pnlMotorSliders.add(slider, c);

    // Create the checkbox
    JCheckBox checkBox = new JCheckBox();
    checkBox.setOpaque(true);
    checkBox.setBackground(Color.blue);
    c.fill = GridBagConstraints.NONE;
    c.gridx = 1;
    c.weightx = 0.1;
    pnlMotorSliders.add(checkBox, c);

    // Create the current label
    JLabel label = new JLabel("0");
    label.setBorder(BorderFactory.createLineBorder(Color.red));
    c.fill = GridBagConstraints.HORIZONTAL;
    c.gridx = 2;
    c.weightx = 0.2;
    pnlMotorSliders.add(label, c);
}

我遇到的问题是,当我在任何 JLabels 中设置文本时,它们会更改其宽度并影响布局的其余部分,即使我设置的文本宽度看起来比JLabel 的宽度。以下两个屏幕截图演示了我的意思(红色和蓝色边框用于调试目的):

我已将底部 JLabel 上的文本设置为“-12”。尽管 JLabel 看起来比文本宽得多,但它已经改变了其大小,影响了布局的其余部分。

为什么会发生这种情况?我可以采取什么措施来防止这种情况发生?


您可以通过设置最小、首选和最大尺寸来固定标签的尺寸:

label.setMinimumSize(width, height);
label.setPreferedSize(width, height);
label.setMaximumSize(width, height);

还要确保将 GridBagConstraints#fill 设置为 NONE,尽管我不确定这是否仍然有必要(我认为是)。

编辑:顺便说一句,要摆脱聚焦组件周围那些令人讨厌的虚线,您可以将其设置为不可聚焦:

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

当 JLabel 的文本发生变化时,如何阻止 JLabel 改变其大小? 的相关文章

随机推荐

  • 将变量分配给Python中函数的局部作用域

    我想将一个变量分配给被多次调用的 lambda 范围 每次都有一个新的变量实例 我怎么做 f lambda x x var x var y Code needed here to prepare f with a new var resul
  • 使用h5py增量写入hdf5

    我有一个关于如何最好地使用 python h5py 写入 hdf5 文件的问题 我有这样的数据 timepoint voltage1 voltage2 178 10 12 179 12 11 185 9
  • 如何在 JBoss 6 中分离耳朵类加载器和系统类加载器?

    我正在尝试从 JBoss 4 2 1 升级到 JBoss 6 在 JBoss 4 2 1 中 我们手动部署应用程序作为爆炸战争 一切都运行良好 我遇到了问题 因为我尝试部署的应用程序使用的第三方库版本比 JBoss 6 现在默认包含的版本要
  • 注入的 HttpClient 忽略 IHttpClientFactory 配置

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 函数调用时的奇怪行为

    当调用Javascript函数时 似乎JS优先考虑不带参数的函数 即使我有相同的带参数的函数名 奇怪的行为仅发生在以下情况 我有一个嵌入了 Javascript 的 HTML 页面 如下所示 Javascript in the page f
  • 有没有办法从 FBJS 的画布访问 iframe 的窗口对象? (Facebook)

    我需要能够从 facebook 画布访问 iframe 窗口 通常你可以使用 window frames 来做到这一点 但 FJBS 似乎不允许访问 window 对象 有人知道如何访问窗口对象吗 你可以试试这个 让我知道它是如何工作的 v
  • Firebase API 在 React Native 上使用 Axios 时不会响应常见错误代码

    我正在使用 Axios 和 Redux 使用 Firebase Auth REST API 和 React Native 我有一个使用电子邮件和密码登录的操作 这是我的代码 export function signIn data const
  • Python 类方法在调用另一个方法时运行

    我有一堂课如下 class MyClass object def init self self foo foo self bar bar self methodCalls 0 tracks number of times any funct
  • Java - 如何防止 WindowClosing 实际关闭窗口

    对于大多数人来说 我似乎遇到了相反的问题 我有以下非常标准的代码来查看用户是否想在关闭窗口之前进行一些保存 frame setDefaultCloseOperation WindowConstants DO NOTHING ON CLOSE
  • R arulesSequences 查找序列支持哪些模式

    我遇到了麻烦arulesSequencesR 中的库 我有一个带有时间信息的事务数据集 在这里 我们使用默认的zaki数据集 我用黑桃 cspade函数 来查找数据集中的频繁子序列 library arulesSequences data
  • Jquery .toggle 替换代码

    我的网站上有一个按钮 可以在文章的宽布局和窄布局之间切换 从 JQuery 1 9 开始 由于toggle 的弃用 这已经不起作用了 我不是 JS 方面的高手 也没有设法从这里的各种问题中拼凑出答案 所以如果可能的话 希望有人看看我的具体案
  • 通过 Tinkerpop 使用特定模型将(数百万行)数据导入 Janusgraph 的最佳方法

    刚开始使用 Tinkerpop 和 Janusgraph 我正在尝试根据文档来解决这个问题 我有三个数据集 每个数据集包含大约 2000 万行 csv 文件 有一个特定的模型 其中的变量和行需要连接 例如什么是顶点 什么是标签 什么是边 等
  • 将 JSON 数据映射到具有特定视图模型类型的 Knockout observableArray

    有没有办法将 JSON 数据对象映射到可观察数组 然后依次将可观察数组的每个项目初始化为特定类型的视图模型 我已经查看了所有淘汰赛的文档以及淘汰赛和映射示例 但我找不到任何适合我所追求的答案 所以 我有以下 JSON 数据 var data
  • MATLAB 中的双 for 循环,存储信息

    我在 MATLAB 中有两个 for 循环 其中一个 for 循环导致不同的变量被插入到模型中 这些变量是 43 然后我有 5 个地平线 所以我对模型进行了 215 次估计 我的问题是我想将其存储在 215x5 矩阵中 我有 x5 的原因是
  • LINQ 中的动态查询

    如果我有包含字段的 Customer 类 如何为 Linq 编写动态查询 string name string address int phoneno 我必须根据类似于给出的信息进行查询 query string Empty if stri
  • 数据表服务器端的内连接4表

    我有用于在数据表中显示数据的代码 php 但是这个 php 服务器端 不起作用 什么数据表不能使用内连接 如果可以 如何修复我的代码 再说一遍 如何使用内连接在数据表中主动搜索数据 非常感谢
  • 尝试进一步了解OCaml的接口/模块

    我理解 OCaml 中有以下概念interfaces and module 我现在明白如何使用它们了 然而 我不明白的是如何充分利用它们 例如 在 Java 中 假设我们有一个接口Map我们还有Hashtable and HashMap实施
  • 使用嵌套列表进行分组和求和

    我有嵌套列表 我正在尝试使用 java 流和收集器进行分组和求和以获得所需的结果 这样我就无法循环多个SubAccounts 我必须使用 for 循环或其他一些逻辑 我想使用streams api来实现 有没有可能 Map
  • 在 iOS 7 中的另一个 ViewController 上显示清晰的彩色 ViewController [重复]

    这个问题在这里已经有答案了 在 iOS 7 之前 根据这个流行的 Stackoverflow问题 https stackoverflow com questions 11236367 display clearcolor uiviewcon
  • 当 JLabel 的文本发生变化时,如何阻止 JLabel 改变其大小?

    我在代码中生成一些 JComponent 并使用 GridBag 布局来排列它们 我的布局由 12 行和 3 列组成 每行由一个 JSlider 一个 JCheckBox 和一个 JLabel 组成 这是我用来生成 UI 的代码 final