【问题标题】:Is there a standard way for creating custom buttons?是否有创建自定义按钮的标准方法?
【发布时间】:2013-08-16 02:38:23
【问题描述】:

我总是对不同的 GUI 很感兴趣,并在它们上看到自定义组件。目前,我对制作自定义 JButton 感到好奇。

关于我所指的示例,请查看这个 GUI(这只是我快速提取的一个):

所有按钮都是自定义的。我想知道执行这些按钮的正确/可接受的方式是什么。

就个人而言,当我想创建一个自定义按钮时,我只需执行以下操作:

ImageIcon icon = new ImageIcon(getClass().getClassLoader().getResource(resourcePath));
Image img = icon.getImage();
Image newimg = img.getScaledInstance(buttonW, buttonH, java.awt.Image.SCALE_SMOOTH);
button.setIcon(new ImageIcon(newimg));
button.setMargin(new Insets(0,0,0,0));
button.setBorderPainted(false);  
button.setFocusPainted(false);  
button.setContentAreaFilled(false);  
button.setText("");

这似乎是一种简单的方法,但我不确定这是否是正确的方法。它保留了 JButton 功能,但不一定能够自定义它。基本上,我会被困在我拥有的任何图像的背景上。我也只能让按钮看起来有圆角。

上面的代码是一种不恰当的方式吗?我觉得大概是这样。如果是这样,你能提供我应该做的其他方式吗?

我遇到了一些很好的例子,例如:

无论如何,我只是想看看人们是如何创建自定义 JButton 的,也许在工作环境中更容易接受的方法是什么。

如果您有任何自定义按钮的图像,我会很乐意查看它们,也许还有您用来创建它们的来源。

【问题讨论】:

  • 好吧,如果你想制作非常详细和漂亮的按钮(或任何与此相关的组件),我建议使用 JavaFX,因为它的设计非常灵活。
  • 你说的是LAF吗?
  • @JoshM 这很整洁。本质上它是在使用外部库?看起来它可能值得研究。感谢您的提醒。
  • @hexafraction 我想它可以这样列出。但我研究了很多外观和感觉库。我个人只是想创建自己的漂亮按钮。 (圆角,通过简单的调用改变颜色,通过调用改变图标/图像等) - 但我想以正确的方式做,而不是像我现在正在做的一些黑客工作。
  • 所以基本上我会浪费时间(重新发明轮子)创建自己的按钮?我目前在JDK6,也许我应该升级。您介意向我展示您通过 JavaFX 完成的一些按钮吗? - 编辑没关系,找到一个不错的小网站! jgandrews.com/?p=143

标签: java user-interface jbutton


【解决方案1】:

您可能想编写自定义按钮 UI,您可以扩展 javax.swing.plaf.ComponentUI。

您可以仅将自定义 UI 应用到一个按钮或几个按钮,或者创建自定义外观,以便所有按钮都使用您的 UI。

创建自定义 UI 类而不是使用图像的高级之处是

  • 可扩展
  • 您可以翻译文本
  • 更少的内存使用,您不必为每个按钮加载大图像

对于 UI 示例,请参见例如http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/javax/swing/plaf/metal/MetalButtonUI.java

如果您只需要一两个按钮,使用图像可能是您的最佳解决方案。

【讨论】:

  • 有趣的是,在你和 Josh 之间,你们给了我足够的动力去研究 JavaFX。我要开始阅读了。目前,我只需要几个自定义按钮,但最终该列表可能会增长。我想肯定有人会过来发布他们自定义绘制按钮的示例,但也许我有点过于乐观了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
  • 2016-12-27
相关资源
最近更新 更多