我将[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);