Подтвердить что ты не робот

Java: использование изображения в виде кнопки

Я хотел бы использовать изображение в качестве кнопки на Java, и я попытался сделать это:

BufferedImage buttonIcon = ImageIO.read(new File("buttonIconPath"));
button = new JButton(new ImageIcon(buttonIcon));

Но это все еще показывает фактическую кнопку за изображением, мне бы хотелось, чтобы изображение функционировало как кнопка, как я могу это сделать?

4b9b3361

Ответ 1

Удалите границу:

button.setBorder(BorderFactory.createEmptyBorder());

а затем также содержимое 1:

button.setContentAreaFilled(false);

1: взято из решения, добавленного к вопросу, с помощью @3sdmx

Ответ 2

Предполагалось бы установить изображение как метку и добавить зрителя мыши к метке для обнаружения кликов.

Пример:

ImageIcon icon = ...;

JLabel button = new JLabel(icon);

button.addMouseListener(new MouseAdapter() {
  @Override
  public void mouseClicked(MouseEvent e) {
     ... handle the click ...
  }
});

Ответ 3

buttonIcon.setBorder(новый EmptyBorder (0,0,0,0));

Ответ 4

button.setBorderPainted( false );

Ответ 5

Это можно легко сделать в netbeans, установив свойство contentAreaFilled в значение False

Ответ 6

    BufferedImage buttonIcon = ImageIO.read(new File("myImage.png"));
    button = new JButton(new ImageIcon(buttonIcon));
    button.setBorderPainted(false);
    button.setFocusPainted(false);
    button.setContentAreaFilled(false);

Ответ 7

просто напишите это

button.setContentAreaFilled(false);

Ответ 8

Насколько я знаю, нет простого способа сделать это, вам нужно будет переопределить метод paintComponent класса JButton на ваш образ, если вы хотите отображать только изображение и вести себя как кнопка, вы можете добавить JPanel, который рисует изображение (clicky) и добавьте MouseListener/MouseAdapter для обработки события mousePressed

Ответ 9

Я выполнил следующие шаги, и я смог успешно создать "ImageButton".

  • Создайте JButton
  • Добавлен прослушиватель действий
  • Установите значок изображения (обратите внимание, что я поместил значок info.png в папку src\main\resources и загрузился с помощью загрузчика классов). Структура проекта здесь. Структура папки проекта
  • Установите пустой Border
  • Отключено заполнение области содержимого
  • Отключено фокусируемость
  • Добавлен в contentpane

PFB код, который работал у меня

JButton btnNewButton = new JButton("");
btnNewButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        System.out.println("Info clicked");
    }
});

String iconfilePath = this.getClass().getClassLoader().getResource("info.png").getFile();
btnNewButton.setIcon(new ImageIcon(iconfilePath));
btnNewButton.setBounds(10, 438, 39, 31);
btnNewButton.setBorder(BorderFactory.createEmptyBorder());
btnNewButton.setContentAreaFilled(false);
btnNewButton.setFocusable(false);
contentPane.add(btnNewButton);

Выходная кнопка, приведенная выше, приведена ниже

введите описание изображения здесь