gpt4 book ai didi

java - 双字节系统区域设置导致 Swing 组件调整大小

转载 作者:行者123 更新时间:2023-11-30 04:51:45 27 4
gpt4 key购买 nike

我正在开发适用于 Solaris 的 Swing 应用程序,并且只有当系统 LANG 变量设置为双字节语言(例如韩语)时才会出现问题。问题是组件的大小正在调整,这扰乱了应用程序的布局:

1) LANG 设置为韩语

last label doesn't fit

2) LANG 设置为英语

all labels fit in the panel

更改 Java 代码本身的 Locale 不会影响显示(如果 LANG=English 并且 Locale 设置为韩语,则一切正常。如果 LANG=Korean 并且 Locale 设置为 English,则会出现此问题)。

这是由 LayoutManager 引起的吗(我使用的是 BorderLayout)?有什么办法可以防止这种情况发生吗?到目前为止,我可以使用的唯一解决方法是在启动应用程序之前将系统区域设置更改为英语。

这是我正在做的一些示例代码:

Box container = Box.createVerticalBox();
container.add(label1);
container.add(label2);
container.add(label3);
container.add(label4);
container.add(label5);

Border border1 = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
TitledBorder titledBorder = BorderFactory.createTitledBorder(border1, LocalizationTools.getString("STR_1"));

Dimension lDim = new Dimension(550, 100);
mypanel = new JPanel(new BorderLayout());
mypanel.setPreferredSize(lDim);
mypanel.setMaximumSize(lDim);
mypanel.setMinimumSize(lDim);
mypanel.setBorder(titledBorder);
mypanel.add(container);

以下是示例中使用的一些字符串:

1)“\ud648\ub514\ub809\ud1a0\ub9ac”

2) "\ubcc0\uacbd\uc2dc\uac04"

3) "\ub9c8\uc9c0\ub9c9\uc791\uc5c5"

最佳答案

这里有一些可以尝试的事情:

  • 确保您在父 Window 上调用 pack() 并且不会干扰任何组件的首选大小。

  • 使用compound border ,将 EmptyBorder 添加到您的 TitledBorder

  • 调试时,向 BorderLayout 添加填充并使用颜色突出显示。

  • 编辑您的问题以包含 sscce表明问题所在; native 用户可能会更清楚地看到问题(底部的文本截断)。

关于java - 双字节系统区域设置导致 Swing 组件调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9688624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com