我正在尝试创建一个按钮面板,使单击的按钮变成“不同颜色”。即显示背景图像。ps我只需要这种方法(带有2张图像),不需要其他任何东西。谢谢 !
例如:
public class TestPane extends JPanel { private BufferedImage imgUnclicked; private BufferedImage imgClicked; private Point mousePoint; public TestPane() { try { imgUnclicked = ImageIO.read(new File("C:\\Users\\Me\\Desktop\\tmp\\Uncolored.png")); imgClicked = ImageIO.read(new File("C:\\Users\\Me\\Desktop\\tmp\\Colored.png")); } catch (IOException ex) { Logger.getLogger(Spotlight.class.getName()).log(Level.SEVERE, null, ex); } addMouseMotionListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { mousePoint = e.getPoint(); repaint(); } }); } } @Override protected void paintComponent(Graphics g) { //Draw imgClicked //Draw imgUnclicked with some rectangular area around mouse click subtracted } }
无需重新发明轮子。而是使用JToggleButton(适当配置)。一个按钮将同时响应鼠标 和 键盘输入。
JToggleButton
import java.awt.*; import java.net.*; import javax.imageio.ImageIO; import javax.swing.*; class ChangeImageOnClick { public static void main(String[] args) throws Exception { URL url1 = new URL("http://i.stack.imgur.com/gJmeJ.png"); final Image img1 = ImageIO.read(url1); URL url2 = new URL("http://i.stack.imgur.com/wCF8S.png"); final Image img2 = ImageIO.read(url2); Runnable r = new Runnable() { @Override public void run() { JToggleButton btn = new JToggleButton("Click me!"); btn.setIcon(new ImageIcon(img1)); btn.setSelectedIcon(new ImageIcon(img2)); btn.setContentAreaFilled(false); btn.setBorderPainted(false); JOptionPane.showMessageDialog(null, btn); } }; SwingUtilities.invokeLater(r); } }