我创建了一个扩展 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/