How to create rounded JButton in java..?

不羁岁月 提交于 2019-12-18 04:22:02

问题


I want to create rounded JButton in Java...
For that I use rounded image and placed that image on button but I didn't get rounded button..

please any one can tell how to create rounded button in Java like show in below figure..

thanks in advance.....


回答1:


If you're just going to use an image of a round button, then why not just use a JLabel? That is, simply invoke setIcon(...), passing your BufferedImage instance as an argument.

CODE

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);
    }
}

OUTPUT

Keep in mind that you'll need to either programmatically make the background of your image transparent, or you'll need to use an image editing tool like Paint.NET.




回答2:


Any Shape using the image that set the transparent color to its shape 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 ();
  }

In the above sample, JButton creates a button by pasting a circular image.

Circular, the same size of PNG is an image (outside of the circle is transparent color) providing three types JButton set to

  1. setIcon
  2. setPressedIcon
  3. setRolloverIcon
  4. setContentAreaFilled (false) Set the like, it does not draw the button itself

It contains Override, if you click on the outside of the circle button so as not to react

  1. In this sample, and not necessarily that is generating the circle from the transmission color of the image, and prepares separate circular shapes the size of the image
  2. From the image of the transparent color, to set a clickable area, change the shape definition of the JComponent.

You can check the Runnable Jar file and full Source Code on GeekOnJava




回答3:


You need to write a "Look and Feel" (a theme for Java Swing). Not for the faint of heart but possible. I suggest to look at an existing theme.

LIQUIDLNF should be a good start.




回答4:


You can use JavaFX to define "Rich Graphic Components" example (rounded button with gradient): http://poligloci.blogspot.com/2009/07/beauty-and-beast-javafx-12-in-netbeans.html



来源:https://stackoverflow.com/questions/5120116/how-to-create-rounded-jbutton-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!