我正在使用Swing创建一个UI,我希望我用于自定义对话框的按钮具有与标准对话框中相同的样式。
例如,在附加的图像中,我有一个自定义对话框和标准文件选择对话框。我希望文件选择对话框中的“确定”和“取消”按钮用于我的自定义对话框中的等效按钮。
我希望我的应用程序使用默认的系统外观,感觉它运行的是什么操作系统,所以我不想尝试手动重新创建这些标准按钮。使用更加严格的自动提供这些按钮的Swing类也无法正常工作,因为我还希望在我的UI中的其他更奇特的地方使用它们。
这个问题有一个简单的解决方案吗?
答案 0 :(得分:1)
很抱歉成为坏消息的承载者,但看起来没有标准的方法来实现这个跨平台。默认按钮上的行为,助记符和图标按照每种外观以非常具体的方式处理。
这是一个SO问题,回答了有关如何设置the default OK and Cancel buttons on a dialog的问题(使用getRootPane().setDefaultButton(...)
设置默认按钮,而取消按钮需要自定义键盘监听器。如果您非常幸运,设置默认按钮可能会为其添加一个图标,具体取决于UI的编码方式。
UIManager
的This forum thread addresses the issue of getting icon resources。每个LaF都有一组UI默认值,例如颜色,文本,边框和图标。在所有LaF中都有许多默认图标,但对于非标准图标,例如按钮上的图标,则无法保证。但是,如果您在提供的屏幕截图中告诉我您使用的是哪个LaF,我可以查找其自定义UI类使用的资源键(如果您有源代码,也可以自己查找)。然后,您可以编写一个帮助方法,通过这些键查找图标,如果找到它们,则将它们添加到按钮中。
答案 1 :(得分:0)
JButton.setUI(ButtonUI)仅为一个JButton设置UI。与工厂一起使用:
public static JButton createStyledButton(String text) {
JButton button = new JButton(text);
button.setUI(STYLE_UI);
return button;
}