gpt4 book ai didi

java - 将 JLabel 类绘制到另一个 JPanel 类的问题

转载 作者:行者123 更新时间:2023-11-30 06:37:51 25 4
gpt4 key购买 nike

我创建了一个扩展 JLabel 的类,用作我在游戏中围绕 JPanel 移动的对象。

import javax.swing.*;

public class Head extends JLabel {

int xpos;
int ypos;

int xvel;
int yvel;

ImageIcon chickie = new ImageIcon(
"C:\\Users\\jjpotter.MSDOM1\\Pictures\\clavalle.jpg");
JLabel myLabel = new JLabel(chickie);

public Head(int xpos, int ypos, int xvel, int yvel){

this.xpos = xpos;
this.ypos = ypos;
this.xvel = xvel;
this.yvel = yvel;
}

public void draw(){
myLabel.setLocation(xpos, ypos);
}

public double getXpos() {
return xpos;
}

public double getYpos() {
return ypos;
}

public int getXvel() {
return xvel;
}

public int getYvel() {
return yvel;
}

public void setPos(int x, int y){

xpos = x;
ypos = y;

}

}

然后我试图将它添加到我的 JPanel 中。从这里开始,我将随机增加它的 x 和 y 坐标,使其在屏幕上 float 。我无法将其自身绘制到 JPanel 上。我知道我在这里缺少一个关键概念,涉及在不同面板上绘制组件。这是我的 GamePanel 类中的内容

import java.awt.Dimension;
import java.util.Random;
import javax.swing.*;


public class GamePanel extends JPanel {

Random myRand = new Random();
Head head = new Head(20,20,0,0);

public GamePanel(){

this.setSize(new Dimension(640, 480));
this.add(head);

}

}

关于如何将其添加到 JPanel 的任何建议?另外,这是让图片在游戏中随机漂浮在屏幕上的好方法吗?

最佳答案

首先,不需要扩展 JLabel 来执行此操作。

a) 在将图像添加到标签后设置标签的大小:

label.setSize( label.getPreferredSize() );

b) 你不需要 draw() 和所有的 setter 方法。要移动标签,您只需使用:

label.setLocation(...);

c) 如果你想增加位置,你可以使用类似的东西:

label.setLocation(label.getLocation().x + 5, ...);

设置标签的大小和位置后,您可以将其直接添加到面板中。确保您已完成:

panel.setPreferredSize() 

当您将面板添加到框架的内容 Pane 时。

您的代码过于模糊,无法给出具体建议。如果您需要更多帮助,请发布您的 SSCCE .您的问题可能是布局管理器的使用或您没有使用布局管理器这一事实。

关于java - 将 JLabel 类绘制到另一个 JPanel 类的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3007021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com