我将[OK]和[Cancel]按钮水平放置在一个Box(有BoxLayout)中。稍后我将这个Box添加到JDialog的内容窗格中的BorderLayout.PAGE_END。这在Windows中非常适用,因此[确定]在[取消]的左侧 - 就像我添加的那样。
当我在Linux中测试时,按钮的位置与Windows相同 - [确定]到[取消]的左侧。这再次来自代码。
但是,在Linux(Ubuntu)中,按钮的默认位置是[确定]左侧的[取消]。这与我的代码和按钮位置形成对比。
所以,我的问题是:Java是否有某种常量 - 比如OS_PLACEMENT,可以在某处设置,这会使[Cancel]按钮出现在Linux的[OK]左侧?我问这个是因为我知道Java支持RTL和LTR布局的常量。因此,我认为,可能存在一些与这种位置相关的常数。
我想提一下,我确实将我的Swing应用程序的L& F设置为System L& F.以下是我在main()
中的第一行UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
答案 0 :(得分:2)
当你说Linux(Ubuntu)你的意思是Gnome,对吗?默认情况下,按钮放置(操作系统)Gnome(Gtk)将取消按钮放在左侧。
您可以尝试更改Swing的外观: How to Set the Look and Feel
答案 1 :(得分:1)
不,Java不会自动为您执行此操作。
考虑使用免费的“JGoodies Form”库。它有一个名为“ButtonBarBuilder”的类,它将根据用户的操作系统以正确的顺序布置按钮。
否则,您必须手动检查System.getProperty(“os.name”)的值,并根据值布置按钮。
答案 2 :(得分:0)
一些LayoutManagers会自动为您执行此操作,例如DesignGridLayout和MigLayout检测运行应用程序的操作系统,并根据它,将选择正确的位置以进行确定和取消(以及其他特定按钮)
例如,使用DesignGridLayout,您可以:
DesignGridLayout layout = new DesignGridLayout(myDialog);
layout.row().bar().add(okButton, Tag.OK).add(cancelButton, Tag.CANCEL);