我有一些圖片,我需要改變點擊,現在只有三個圖像的每個類別,3個鼻子,3個眼睛和3個嘴巴。所以我採取這種方法來解決我的問題,但是我意識到這不是最好的方式去解決它,因爲圖像的數量是硬編碼,我希望它改變dinamically。我需要一些想法或建議。動作偵聽器,點擊更改圖像。
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();
}
}
你能解釋一下你的問題嗎?我不清楚你打算怎麼做? 3鼻子,嘴巴等是什麼意思? –
我有三個不同的名爲nose1,nose2,nose3的png文件。我想每次點擊時切換它們,所以我已經使用模運算符來保持圖像數量超過3,因此我不會超出範圍。但正如你可以看到我的變化眼睛,改變嘴巴,改變鼻子硬編碼與3圖像工作。我想實現一個不同的方式來做到這一點,我注意到,如果我想添加另一個圖像,我必須更改字段值和方法值。 – mrKapplan