我正在编写一款 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 类是位于程序中心的类,它负责控制程序的运行。以前我在互联网上看到的所有教程都指出在 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......
}
此方法每隔几毫秒重新绘制一次,一切都很棒!除了...现在我已经到了这样的地步:我需要一次将数百个不同的元素绘制到屏幕上,这些元素来自不同的类,并且使用当前的方法,您必须手动输入每个绘制命令,从而使代码无效坦率地说毫无意义。
因此,我尝试创建一个类来代替这种手工劳动的需要,使该方法可重用,但我发现让它工作非常困难:
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
}
}
但是我如何将此类实现到我的代码中,是否将其添加为组件? (如果是这样,怎么办?)因为我已经尝试过这个,但它只是向我抛出一个错误,并且我尝试使用一些布局,但它们只是由于某种原因出现故障。
我要将它们添加到面板中吗?我不知道结果如何..
除此之外,我一无所知,因为我花了一整天的时间来研究这个问题。
最佳答案
What is an effective way of painting hundreds of images to a
JFrame
at a time?
- 将它们放入一个集合中,例如
ArrayList
。 - 循环迭代集合。
- 在循环体内,依次绘制集合的每个成员。
关于java - 一次将数百个图像绘制到 JFrame 的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27578978/