如何强制调整 JCheckBox 的大小以防止单击空白区域?

发布于 2024-09-05 18:53:42 字数 695 浏览 14 评论 0原文

当我在 Swing 应用程序中创建 JCheckBox 时,我在其标签后留了一些额外的空间,因此,如果 JCheckBox 标签的宽度为 100 像素,为了安全起见,我将 JCheckBox 设为 120 像素。

问题是在运行时,用户可以单击 JCheckBox 标签后面的空白区域并且可以实际单击它,这并不好,如下所示:

https://i.sstatic.net/zgHCY.png

我想知道是否有一种方法可以在运行时调整 JCheckBox 的大小以完全适合其中的文本,具体取决于字体类型/大小用过吗?

这看起来有点花哨,但我喜欢让事情看起来很完美:)

编辑 - 更多细节:

我使用FormLayout,我定义 JCheckBox 如下:

CellConstraints con = new CellConstraints();
contentPane.add(checkBox1, con.xywh(3, 13, 10, 1));

When i create a JCheckBox in my Swing application i leave some extra space after its label, so if the JCheckBox label is for example 100 pixels width, i make the JCheckBox 120 pixels for safety.

The problem as at runtime, it's not nice that a user can click on the empty space after the JCheckBox label and it can be actually clicked, like this :

https://i.sstatic.net/zgHCY.png

I wonder if there is a way to resize the JCheckBox at runtime to exactly fit the text inside it, depending on the font type/size used ?

This seems fancy a bit, but i like to make things look perfect :)

Edit - More details :

I use FormLayout, and I define the JCheckBox like this :

CellConstraints con = new CellConstraints();
contentPane.add(checkBox1, con.xywh(3, 13, 10, 1));

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我不是你的备胎 2024-09-12 18:53:42

根据所使用的字体类型/大小完全适合其中的文本

这是 JCheckBox 的默认首选大小;只是不要改变它。

to exactly fit the text inside it, depending on the font type/size used

This is the default preferred size of JCheckBox; just don't change it.

世俗缘 2024-09-12 18:53:42

@trashgod 是正确的。如果您想要填充、对齐或间距以达到美观目的,您应该使用布局管理器来实现此目的,而不是弄乱组件本身。几乎任何您想要实现的布局都可以通过这种方式完成。您可能需要使用GridBagLayout,这可能很痛苦,但它是最灵活的。

@trashgod is correct. If you want padding, aligning, or spacing to aesthetic purposes, you should use the layout managers to achieve this and not mess with the components themselves. Pretty much any layout you want to achieve can be done this way. You may need to use GridBagLayout, which can be a pain, but it's the most flexible.

当爱已成负担 2024-09-12 18:53:42

好的...谢谢大家的回答。
我在使用 FormLayout 时找到了合适的解决方案:

contentPane.add(checkBox1, con.xywh(3, 13, 10, 1, CellConstraints.LEFT, CellConstraints.DEFAULT));

Okay ... Thanks all for your answers.
I have found a suitable solution while using FormLayout :

contentPane.add(checkBox1, con.xywh(3, 13, 10, 1, CellConstraints.LEFT, CellConstraints.DEFAULT));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文