Как создать округленный JButton в Java ..? - PullRequest
4 голосов
/ 25 февраля 2011

Я хочу создать округленный JButton в Java ...
Для этого я использовал округленное изображение и поместил это изображение на кнопку, но я не получил кнопку с закругленными углами ..

Пожалуйста, любой может рассказать, как создать закругленную кнопку на Java, как показано на рисунке ниже. enter image description here

спасибо заранее .....

Ответы [ 4 ]

6 голосов
/ 25 февраля 2011

Если вы просто собираетесь использовать изображение круглой кнопки, то почему бы просто не использовать JLabel?То есть просто вызовите setIcon(...), передав свой экземпляр BufferedImage в качестве аргумента.

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

enter image description here

Имейте в виду, что вам нужно либо программно сделать фон вашего изображения прозрачным, либо использовать инструмент для редактирования изображений, например Paint.NET .

4 голосов
/ 29 июля 2015

Любая форма, использующая изображение, которое задает прозрачный цвет своей формы. JButton

Create Round JButton in Swing

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, настроенных на

  1. SetIcon
  2. setPressedIcon
  3. setRolloverIcon
  4. setContentAreaFilled (false) Устанавливает подобное, оно не рисует сама кнопка

Содержит Override, если вы нажимаете на внешнюю кнопку круга, чтобы не реагировать

  1. В этом примере необязательно генерирует круг от передачи цвета изображения, и готовит отдельно круглые формы, размер изображения
  2. Из изображения прозрачного цвета, чтобы установить интерактивную область, изменить определение формы JComponent.

Вы можете проверить файл Runnable Jar и полный исходный код на GeekOnJava

2 голосов
/ 25 февраля 2011

Вам нужно написать «Look and Feel» (тема для Java Swing).Не для слабонервных, но возможно.Я предлагаю взглянуть на существующую тему.

LIQUIDLNF должно быть хорошим началом.

1 голос
/ 25 февраля 2011

Вы можете использовать JavaFX для определения примера «Rich Graphic Components» (округленная кнопка с градиентом): http://poligloci.blogspot.com/2009/07/beauty-and-beast-javafx-12-in-netbeans.html

...