我想使用圖像作爲一種按鈕,但我能想到的唯一方法是添加一個鼠標單擊事件。這不工作還有什麼想法?這裏是我的代碼:我想使用鼠標點擊事件的圖像,但它不起作用
import java.awt.* ;
import java.awt.event.MouseEvent;
import java.awt.Point;
import java.awt.image.* ;
import java.io.* ;
import javax.imageio.* ;
import javax.swing.* ;
public class test {
public static void main(String[]args) {
new test();
}
public test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException |
UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new Pane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class Pane extends JPanel {
private BufferedImage background;
private BufferedImage Levels;
private BufferedImage Exit;
private BufferedImage PietKiezen;
private BufferedImage ZwartePiet;
private BufferedImage Sinterklaas;
public Pane() {
try {
background = ImageIO.read(new
File("C:/Users/H/Documents/NetBeansProjects/Spel/src/Spel/Dak.gif"));
Levels = ImageIO.read(new
File("C:/Users/H/Documents/NetBeansProjects/Spel/src/Spel/Levelsk.gif"));
Exit = ImageIO.read(new
File("C:/Users/H/Documents/NetBeansProjects/Spel/src/Spel/Exitk.gif"));
PietKiezen = ImageIO.read(new
File("C:/Users/H/Documents/NetBeansProjects/Spel/src/Spel/PietKiezen.gif"));
ZwartePiet = ImageIO.read(new
File("C:/Users/H/Documents/NetBeansProjects/Spel/src/Spel/ZwartePiet.gif"));
Sinterklaas = ImageIO.read(new
File("C:/Users/H/Documents/NetBeansProjects/Spel/src/Spel/Sinterklaas.gif"));
} catch (IOException ex) {
ex.printStackTrace();
}
}
@Override
public Dimension getPreferredSize() {
return background == null ? new Dimension(200, 200) : new
Dimension(background.getWidth(), background.getHeight());
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g.create();
if (background != null) {
int x = (getWidth() - background.getWidth())/2;
int y = (getHeight() - background.getHeight())/2;
g2d.drawImage(background, x, y, this);
}
if (PietKiezen != null) {
int x = 970;
int y = 130;
g2d.drawImage(PietKiezen, x, y, this);
}
if (Levels != null) {
int x = 970;
int y = 260;
g2d.drawImage(Levels, x, y, this);
}
if (Exit != null) {
int x = 970;
int y = 390;
g2d.drawImage(Exit, x, y, this);
}
if (ZwartePiet != null) {
int x = 600;
int y = 256;
g2d.drawImage(ZwartePiet, x, y, this);
}
if (Sinterklaas != null) {
int x = 800;
int y = 256;
g2d.drawImage(Sinterklaas, x, y, this);
}
g2d.dispose();
}
public void mouseClicked(MouseEvent me) {
Point clicked = me.getPoint();
Rectangle bounds = new Rectangle(172, 62, Exit.getWidth(), Exit.getHeight());
if (bounds.contains(clicked)) {
JOptionPane optionPane = new JOptionPane(
"The only way to close is\n"
+ "by pressing one of the following buttons.",
JOptionPane.QUESTION_MESSAGE,
JOptionPane.YES_NO_OPTION);
}
}
}
}
我現在試圖做的是,當退出圖像被點擊時,有一個彈出式屏幕。爲什麼我沒有看到彈出屏幕?有沒有另一種方法可以將圖像轉換爲按鈕,而不會看到它自己的按鈕?
繪製一個矩形,在你畫法,在那裏你「想」的使用應單擊要仔細檢查你的邏輯是正確的 – MadProgrammer 2014-10-29 09:04:46
*「我想用圖片作爲一種按鈕,..「*而是使用'Image'作爲JButton的'ImageIcon'(未裝飾,可能沒有邊框),我敢打賭它可以用於鼠標和鍵盤。 – 2014-10-29 09:21:04
帶圖像的'Button'也適用於這裏。如果不想使用按鈕的邊框,則使用「空邊框」即可將其刪除。 – 2014-10-29 09:28:31