我有一些图像需要在点击时更改,现在每个类别只有三个图像,3个鼻子,3个眼睛和3个嘴巴。所以我把这种方法用于我的解决方案,但是我意识到这不是最好的方法,因为图像的数量是硬编码的,我希望它能改变它。我需要一些想法或建议。
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class ImagePanel extends JPanel {
/**
* Create the panel.
*/
private int nose = 1;
private int mouth = 1;
private int eyes = 1;
Color[] color ={Color.BLUE, Color.RED, Color.PINK,Color.CYAN,Color.WHITE};
static int colorCounter =1 ;
public ImagePanel() {
}
public void changeNose(){
nose = ++nose % 3;
nose++;
}
public void changeMouth(){
mouth = ++mouth % 3;
mouth++;
}
public void changeEyes(){
eyes = ++ eyes % 3;
eyes++;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.green);
g.setColor(color[colorCounter]);
g.fillOval(40, 120, 400, 400);
ImageIcon hat = new ImageIcon
(ImagePanel.class.getResource("/a06Face/Images/santa.png"));
hat.paintIcon(this, g, 160, 3);
ImageIcon eyes1 = new ImageIcon
(ImagePanel.class.getResource("/a06Face/Images/eyes"+eyes+".png"));
eyes1.paintIcon(this, g,180, 200);
ImageIcon nose1 = new ImageIcon(ImagePanel.class.getResource("/a06Face/Images/nose"+nose+".png"));
nose1.paintIcon(this, g, 180, 300);
ImageIcon mouth1 = new ImageIcon
(ImagePanel.class.getResource("/a06Face/Images/mouth"+mouth+".png"));
mouth1.paintIcon(this, g, 170, 400);
repaint();
}
}
答案 0 :(得分:0)
您可以使用MouseListener。 怎么做:
//in your Class constructor
public XYZ()
{
.....
Timer t = new Timer(0,new Listener());
t.start();
addMouseListener(new Mouse());
// later in program
private class Mouse extends MouseAdapter
{
public void mouseClicked(MouseEvent e)
{
<object>.doMethod(e.<otherMethod>);
}
}
&#13;
这就是如何使用通用的MouseListener。修改它以适合您的程序。
答案 1 :(得分:0)
好吧,让我们试一试。让我们定义一个实例字段,它保存我们系统中的所有图像项。这可能是,
private List<ImageIcon> imgIcons = new ArrayList<ImageIcon>;
然后编写一个方法将图像图标添加到此列表中。它可能看起来像这样。
private void addImageIcon(ImageIcon imgIcon){
this.imgIcons.add(imgIcon);
}
从需要添加图像的任何位置调用此方法。然后,当您需要计算此面板中的图像数量时,您可以获得数组的大小。希望这可以帮助。快乐的编码!