我想在Java中创建圆形JButton ...
为此,我使用圆形图像并将该图像放在按钮上,但我没有得到圆形按钮..
请任何人都可以告诉如何在Java中创建圆形按钮如下图所示..
提前感谢.....
答案 0 :(得分:6)
如果您打算使用圆形按钮的图像,为什么不使用JLabel
?也就是说,只需调用setIcon(...)
,将BufferedImage
实例作为参数传递。
public final class RoundedButtonDemo {
private static BufferedImage bi;
public static void main(String[] args){
try {
loadImage();
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
createAndShowGUI();
}
});
} catch (IOException e) {
// handle exception
}
}
private static void loadImage() throws IOException{
bi = ImageIO.read(RoundedButtonDemo.class.getResource("../resources/login.png"));
}
private static void createAndShowGUI(){
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JLabel label = new JLabel();
label.setIcon(new ImageIcon(bi));
frame.getContentPane().add(label);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
请注意,您需要以编程方式使图片的背景透明,或者您需要使用Paint.NET等图片编辑工具。
答案 1 :(得分:4)
使用将透明颜色设置为其形状JButton
的图像的任何形状public RoundButton (String text, Icon icon) {
setModel (new DefaultButtonModel ());
init (text, icon);
if (icon == null) {
return;
}
setBorder (BorderFactory.createEmptyBorder (1, 1, 1, 1));
setBackground (Color.BLACK);
setContentAreaFilled (false);
setFocusPainted (false);
//setVerticalAlignment(SwingConstants.TOP);
setAlignmentY (Component.TOP_ALIGNMENT);
initShape ();
}
在上面的示例中,JButton通过粘贴圆形图像来创建一个按钮。
圆形,相同大小的PNG是一个图像(圆圈外面是透明色),提供三种类型的JButton设置为
它包含覆盖,如果您点击圆形按钮的外侧以便不作出反应
您可以在 GeekOnJava
上查看Runnable Jar文件和完整的源代码答案 2 :(得分:2)
你需要写一个“外观”(Java Swing的主题)。不是为了胆小的人,而是可能的。我建议看看现有主题。
LIQUIDLNF应该是一个好的开始。
答案 3 :(得分:1)
您可以使用JavaFX定义“Rich Graphic Components”示例(带渐变的圆角按钮):http://poligloci.blogspot.com/2009/07/beauty-and-beast-javafx-12-in-netbeans.html