Java 绘制图像网格并设置其动画

Java 绘制图像网格并设置其动画,java,animation,grid,rotation,Java,Animation,Grid,Rotation,我真的需要你们的帮助。我必须在3 X 3的图像网格上制作动画 我的问题是: 一, 如何用这些图像构建3x3网格 这就是我所做的,但不起作用,因为我在这一行中得到了nullpointerException:rail[x][y]=new JLabelicon 二, 如何将此网格用作动画的背景 三, 我必须旋转网格[2][2]中的图像,如何单独访问此图像并旋转它?我知道如何进行旋转,所以请告诉我如何获取元素[2][2],以便我可以旋转它 感谢您的帮助此行与Swing不符: frame.setLayou

我真的需要你们的帮助。我必须在3 X 3的图像网格上制作动画

我的问题是:

一, 如何用这些图像构建3x3网格

这就是我所做的,但不起作用,因为我在这一行中得到了nullpointerException:rail[x][y]=new JLabelicon

二, 如何将此网格用作动画的背景

三, 我必须旋转网格[2][2]中的图像,如何单独访问此图像并旋转它?我知道如何进行旋转,所以请告诉我如何获取元素[2][2],以便我可以旋转它


感谢您的帮助

此行与Swing不符:

frame.setLayout(new GridLayout(width,length))
我记得,我们应该将布局应用于面板,即

frame.getContentPane().setLayout (new GridLayout(width,length));
这一行也是错误的:

frame.add(rail[x][y]);
解决方案是一样的:使用contentPane


可以在中找到一些基础知识。

因为您正在尝试构建网格,因此,我建议您查看。这将照顾到您的组件,因为它将分割成一个网格的给定区域

使用ragards旋转图像,请查看方法。

回答1

您之所以获得NPE,是因为您没有像使用“grid”一样初始化名为“rail”的数组:

public ButtonGrid(int width, int length){ //constructor with 2 parameters
        frame.setLayout(new GridLayout(width,length)); //set layout of frame
        grid=new JButton[width][length]; //allocate the size of grid
-->     rail=new JLabel[width][length]; //allocate the size of rail
        for(int y=0; y<length; y++){ 

一般来说,在JPanel中工作会更好,就像建议的那样,但是JFrame上的“add…”和“setLayout…”是委托给内容窗格的方便方法,所以这会起作用。

@Roman,是的,我的坏。。。我误解了自己,这就是为什么我贴了一个GridLayout教程的链接@Kap:当你问一个问题,人们回答时,你可以选择哪个问题是正确的答案。这样,回答正确的人将获得分数。如果您没有标记问题的答案,用户将更不愿意回答您的问题。好的,谢谢。我将从现在开始这样做。我如何评价答案?在左上角,在答案的评分下,你应该能够看到一个非常好的分数的轮廓。只需单击该按钮,您就可以进行设置。另请参见
public ButtonGrid(int width, int length){ //constructor with 2 parameters
        frame.setLayout(new GridLayout(width,length)); //set layout of frame
        grid=new JButton[width][length]; //allocate the size of grid
-->     rail=new JLabel[width][length]; //allocate the size of rail
        for(int y=0; y<length; y++){