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

时间:2013-08-15 18:23:34

标签: 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,以及在工作环境中这样做的可行方式是什么。

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

1 个答案:

答案 0 :(得分:1)

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

您只能将自定义用户界面应用于一个按钮或几个按钮,或创建自定义外观,因此所有按钮都会使用您的用户界面。

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

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

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

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