我正在编写2D策略游戏,并且需要能够一次显示数百张图像。
到目前为止,我有很多课程,但我有一个两难的境界,因为我担心我不能很好地理解JFrame
部分。我写了一个较小的3课程来表明我的问题:
首先,我有一个构造框架的主类:
import javax.swing.JFrame;
public class MainClass {
static JFrame Frame = new JFrame("MainFrame");
public static void main(String[] args){
Frame.add(new Board());
Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Frame.setSize(1024, 500);
Frame.setVisible(true);
Frame.setResizable(false);
}
}
目前,board类是位于程序中心的类,它会拉出所有字符串以使程序运行。以前我在互联网上看到的所有教程都指向在董事会课程中使用paint(Graphics g)
方法,但这给了我一个主要的困境。目前,每次我想要在屏幕上绘制一些内容时,我都必须手动输入:
public board{
//......code....
public void paint(Graphics g){
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(b.getImage(0), 0, 0, null);//Black
g2d.drawImage(b.getImage(1), GameMachanic.getCurrentPosX(), GameMachanic.getCurrentPosY(), null);//background
g2d.drawImage(b.getImage(3), GameMachanic.getCurrentPosX(), GameMachanic.getCurrentPosY(), null);//background
//...more paint to screen code
}
//......code......
}
这种方法每隔几毫秒重新绘制一次,一切都很棒!除了...现在我已经达到了这样的程度,我需要一次从屏幕上绘制数百个不同的元素,从不同的类和当前的方法U必须手动输入每个绘制命令,使代码无效坦率地说是没有意义的。
因此,我尝试创建一个替代这种手工劳动需求的课程,使该方法可重复使用,但我发现它非常难以使其工作:
public class GraphicsPaint extends JFrame{
public void paint(Graphics g, ){
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(b.getImage(0), 0, 0, null);//image
}
}
但是我如何在我的代码中实现这个类,我是否将它作为一个组件添加? (如果是这样,怎么样?)因为我已经尝试了这个,它只是向我抛出一个错误,我尝试使用一些布局,但它们只是因为某些原因而出现故障。
我是否将它们添加到面板?我不知道那会怎么样......
除此之外,我一无所知,因为我整天都在看这个问题。
答案 0 :(得分:2)
将数百张图片一次绘制到
JFrame
的有效方法是什么?
ArrayList
。