使用Java向GPanel添加多个图像
我正在用java为学校制作一个21点游戏,我似乎不知道如何将前四张卡添加到GPanel。卡片数组被洗牌,数组中的字符串与图像的文件名匹配。我可以得到阵列中要加载的第一张卡,但不能得到其他三张卡。任何帮助都会很棒使用Java向GPanel添加多个图像,java,arrays,graphics2d,Java,Arrays,Graphics2d,我正在用java为学校制作一个21点游戏,我似乎不知道如何将前四张卡添加到GPanel。卡片数组被洗牌,数组中的字符串与图像的文件名匹配。我可以得到阵列中要加载的第一张卡,但不能得到其他三张卡。任何帮助都会很棒 public void paintComponent(Graphics g) { //System.out.println(gameInProgress); if(gameInProgress == true) { super.p
public void paintComponent(Graphics g) {
//System.out.println(gameInProgress);
if(gameInProgress == true) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
Image image = null;
int i;
currentPosition = 0;
for (i = 0; i < 4; i++) {
image = Toolkit.getDefaultToolkit().getImage("images/"+deck[currentPosition - i]+".png");
currentPosition++;
}
g2.drawImage(image, 115, 5, 80, (int) 106.67, this);
g2.finalize();
}
}
公共组件(图形g){
//System.out.println(gameInProgress);
如果(gameInProgress==true){
超级组件(g);
图形2d g2=(图形2d)g;
图像=空;
int i;
currentPosition=0;
对于(i=0;i<4;i++){
image=Toolkit.getDefaultToolkit().getImage(“images/”+deck[currentPosition-i]+.png”);
currentPosition++;
}
g2.drawImage(图像,115,5,80,(int)106.67,本);
g2.finalize();
}
}
您的代码中有3个主要问题
第一个问题是由[currentPosition-i]
引起的,因为结果总是等于0,因此数组索引0处的图像/卡将是唯一绘制的图像/卡
第二个问题是您只绘制一个图像,因为g2.drawImage仅在for循环之后调用,而应该位于for循环内部,以便绘制所有4个图像/卡
第三个问题是,您总是在同一个位置绘制图像,因此即使您在同一位置绘制所有4个图像,您也只能看到最后一个图像,因为它覆盖了之前的图像
尝试此操作,它将打印所有4个图像(假设您有一个435x112面板):
公共组件(图形g){
//System.out.println(gameInProgress);
如果(gameInProgress==true){
超级组件(g);
//添加两个新变量
int x=115;
图形2d g2=(图形2d)g;
图像=空;
int i;
对于(i=0;i<4;i++){
image=Toolkit.getDefaultToolkit().getImage(“images/”+deck[i]+.png”);
//g2.drawImage的新位置
//X位置每次都应该改变
g2.绘图图像(图像,x,5,80,107,本);
//更改下一个图像的X位置
x=x+80;
}
//将g2.drawImage从此处移到括号上方
g2.finalize();
}
}
您的首要问题是将某个东西称为GPanel
public void paintComponent(Graphics g) {
//System.out.println(gameInProgress);
if(gameInProgress == true) {
super.paintComponent(g);
//Add a couple new variables
int x = 115;
Graphics2D g2 = (Graphics2D) g;
Image image = null;
int i;
for (i = 0; i < 4; i++) {
image = Toolkit.getDefaultToolkit().getImage("images/"+deck[i]+".png");
//New location of g2.drawImage
//The X positions should change each time
g2.drawImage(image, x, 5, 80, 107, this);
//Change the X location of the next image
x = x + 80;
}
//Moved g2.drawImage from here to above the bracket
g2.finalize();
}
}