Java 有没有办法确定OK/Cancel按钮的正确顺序?

Java 有没有办法确定OK/Cancel按钮的正确顺序?,java,swing,jpanel,jbutton,joptionpane,Java,Swing,Jpanel,Jbutton,Joptionpane,我们有一个Swing应用程序,其中有很多输入对话框,包括OK和cancel按钮 我注意到在JOptionPane中,OK和cancel按钮的顺序根据平台的不同而变化。在Windows上可以/取消,在Unix上可以/取消 在我们添加了自己的“确定”和“取消”按钮的地方,我希望它们的顺序与它们在JOptionPane中显示的顺序相匹配,以保持一致性 我想知道是否有办法询问UIManager,找出当前外观或平台的正确顺序 提前谢谢。 马特您可以使用: Object[] options = { "OK"

我们有一个Swing应用程序,其中有很多输入对话框,包括OK和cancel按钮

我注意到在JOptionPane中,OK和cancel按钮的顺序根据平台的不同而变化。在Windows上可以/取消,在Unix上可以/取消

在我们添加了自己的“确定”和“取消”按钮的地方,我希望它们的顺序与它们在JOptionPane中显示的顺序相匹配,以保持一致性

我想知道是否有办法询问UIManager,找出当前外观或平台的正确顺序

提前谢谢。 马特

您可以使用:

Object[] options = { "OK", "CANCEL" };
JOptionPane.showOptionDialog(null, "Click OK to continue", "Warning",
JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,
null, options, options[0]);

是的,只是不是你所期望的那样。 您必须设计自己的OptionPane类。您必须从JOptionPane扩展。这样,您可以设计按钮的放置位置。
我个人建议搜索其他解决方案。

JopOptions窗格中按钮的顺序由

boolean isYesLast = UIManager.getDefaults().getBoolean("OptionPane.isYesLast");

如果
isyeslat
为真,则按钮顺序颠倒(例如:是/否/取消->取消/否/是)

谢谢,但我想使用系统外观,或允许用户指定外观。我只是想找出按钮的正确顺序,应该根据所使用的LAF来添加。请参见编辑的答案。看,这正是我要找的。非常感谢。NB:返回错误的结果,并带有@trashgood:有趣。AquaOptionPaneUI使用自己的布局来安排按钮区域,并绕过BaseOptionPaneUI定义的机制。我没有得到预期的结果。。。
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
Boolean-isYesLast=(Boolean)UIManager.get(“OptionPane.isYesLast”)
System.out.println(isYesLast)
JOptionPane.showConfirmDialog(null,“确定吗?”)
isYesLast=(布尔)UIManager.get(“OptionPane.isYesLast”)
System.out.println(isYesLast)我希望第一个结果为null,但第二个结果也为null。有什么想法吗?谢谢。嗨,Wero,com.sun.java.swing.plaf.windows.windowslook和feel谢谢你的建议。根据上面wero的回答,这是实现它的方法:Boolean isYesLast=(Boolean)UIManager.get(“OptionPane.isYesLast”);