按钮在BoxLayout中的水平位置取决于操作系统



我将[OK]和[Cancel]按钮水平放置在一个Box(具有BoxLayout)中。稍后,我将此框添加到JDialog内容窗格中的BorderLayout.PAGE_END中。这在Windows中非常有效,所以[确定]在[取消]的左边——就像我添加的一样。

当我在Linux中测试时,按钮的位置与Windows相同——[Cancel]左侧的[OK]。这同样源于代码。

然而,在Linux(Ubuntu)中,按钮的默认位置是[OK]左侧的[Cancel]。这与我的代码和按钮的位置形成了对比。

所以,我的问题是:Java是否有某种常量,比如OS_PLACEMENT,它可以设置在某个地方,使Linux中的[Cancel]按钮出现在[OK]的左边?我之所以这么问,是因为我知道Java支持RTL和LTR布局的常量。因此,我认为,可能有一些常量与这种布局有关。

我想提一下,我确实设置了L&我的Swing应用程序到系统L&F.下面是我在main()中的第一行

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

当你说Linux(Ubuntu)时,你指的是Gnome,对吧?Gnome(Gtk)的默认按钮位置(OS)是将Cancel按钮放置在左侧。

您可以尝试更改Swing的外观:如何设置外观

不,Java不会自动为您执行此操作。

考虑使用免费的"JGoodies Form"库。它有一个名为"ButtonBarBuilder"的类,它将根据用户的操作系统以正确的顺序排列按钮。

否则,您必须手动检查System.getProperty("os.name")的值,并根据该值布置按钮。

一些LayoutManager会自动为您执行此操作,例如DesignGridLayout和MigLayout会检测应用程序运行的操作系统,并在此基础上为"确定"one_answers"取消"(以及其他特定按钮)选择正确的位置。

例如,使用DesignGridLayout,您可以执行以下操作:

DesignGridLayout layout = new DesignGridLayout(myDialog);
layout.row().bar().add(okButton, Tag.OK).add(cancelButton, Tag.CANCEL);

相关内容

  • 没有找到相关文章

最新更新