Търсих навсякъде решение за това и прочетох някои подобни публикации, свързани с този проблем, но нито едно от тях не ми помогна.
Опитвам се да покажа изображението "b.png" на JButton и когато прекарам мишката върху бутона, иконата се променя.
package GUI_JButton;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Gui extends JFrame {
private JButton reg;
private JButton custom;
public Gui() {
super("Title goes here");
setLayout(new FlowLayout());
reg = new JButton("reg button"); // create reg button
add(reg); // add reg button to JFrame
// initialize images
Icon b = new ImageIcon(getClass().getResource("images/imageA.png"));
Icon x = new ImageIcon(getClass().getResource("images/imageB.png"));
custom = new JButton("custom button", b); // create custom button
custom.setRolloverIcon(x);
add(custom); // add button to JFrame
HandlerClass handler = new HandlerClass();
reg.addActionListener(handler);
custom.addActionListener(handler);
}
private class HandlerClass implements ActionListener {
public void actionPerformed(ActionEvent event) {
JOptionPane.showMessageDialog(null,
String.format("%s", event.getActionCommand()));
}
}
}
Изображенията са в папка с име images, която е в папката src заедно с файла Gui.java
и файла TESTMain.java
.
Грешката, която получавам, е изключение за нулев указател от Main. опитах
Icon b = new ImageIcon("images/imageA.png");
Това се компилира, но изображението не се показва. Аз също съм опитвал
custom = new JButton("custom", new ImageIcon("images/imageA.png"));
И
custom = new JButton("custom", new ImageIcon(getClass().getResource("images/imageA.png"));
Знам, че getClass().getResource()
се предпочита, тъй като изображенията трябва да бъдат компилирани с буркана.
Някакви идеи за показване на изображенията ми?
getResource("images/imageA.png")
наgetResource("/images/imageA.png")
. - person Andrew Thompson   schedule 19.07.2013