Ответ 1
Удалите границу:
button.setBorder(BorderFactory.createEmptyBorder());
а затем также содержимое 1:
button.setContentAreaFilled(false);
1: взято из решения, добавленного к вопросу, с помощью @3sdmx
Я хотел бы использовать изображение в качестве кнопки на Java, и я попытался сделать это:
BufferedImage buttonIcon = ImageIO.read(new File("buttonIconPath"));
button = new JButton(new ImageIcon(buttonIcon));
Но это все еще показывает фактическую кнопку за изображением, мне бы хотелось, чтобы изображение функционировало как кнопка, как я могу это сделать?
Удалите границу:
button.setBorder(BorderFactory.createEmptyBorder());
а затем также содержимое 1:
button.setContentAreaFilled(false);
1: взято из решения, добавленного к вопросу, с помощью @3sdmx
Предполагалось бы установить изображение как метку и добавить зрителя мыши к метке для обнаружения кликов.
Пример:
ImageIcon icon = ...;
JLabel button = new JLabel(icon);
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
... handle the click ...
}
});
buttonIcon.setBorder(новый EmptyBorder (0,0,0,0));
button.setBorderPainted( false );
Это можно легко сделать в netbeans, установив свойство contentAreaFilled в значение False
BufferedImage buttonIcon = ImageIO.read(new File("myImage.png"));
button = new JButton(new ImageIcon(buttonIcon));
button.setBorderPainted(false);
button.setFocusPainted(false);
button.setContentAreaFilled(false);
просто напишите это
button.setContentAreaFilled(false);
Насколько я знаю, нет простого способа сделать это, вам нужно будет переопределить метод paintComponent класса JButton на ваш образ, если вы хотите отображать только изображение и вести себя как кнопка, вы можете добавить JPanel, который рисует изображение (clicky) и добавьте MouseListener/MouseAdapter для обработки события mousePressed
Я выполнил следующие шаги, и я смог успешно создать "ImageButton".
JButton
info.png
в папку src\main\resources и загрузился с помощью загрузчика классов). Структура проекта здесь. Border
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);
Выходная кнопка, приведенная выше, приведена ниже