java - 是否有创建自定义按钮的标准方法?

标签 java user-interface jbutton

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

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

enter image description here

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

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

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,以及在工作环境中什么是更可接受的方法。

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

最佳答案

您可能想编写自定义按钮 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

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

关于java - 是否有创建自定义按钮的标准方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18259147/

相关文章:

java - 使用 Point2D.Double 绘制点时出现问题

java - Cassandra 上准备好的语句的最大数量

java - 字体问题需要更改

java 计算器文本字段

java - javax.swing.* 中的默认 JButton

java - 如何在 JPanel 失去焦点后保持按下 JButton

java - 使用 Eclipse 编译旧的 Java 源代码

java - 打印输出直到按下按键

objective-c - 在 NSWindows 中双击?

jquery - 将鼠标滚轮绑定(bind)到 Jquery UI slider