Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以将paintComponents()添加到数组中吗?_Java_Arrays_Swing_User Interface_Paintcomponent - Fatal编程技术网

Java 我可以将paintComponents()添加到数组中吗?

Java 我可以将paintComponents()添加到数组中吗?,java,arrays,swing,user-interface,paintcomponent,Java,Arrays,Swing,User Interface,Paintcomponent,这是一些更新的代码,我仍然有困难改变单个矩形的颜色。我想使用一个名为spaces[]的数组,它有15个元素,以决定汽车应该停在哪里。我在考虑以某种方式将矩形数组的最后一个元素与CarSpace数组进行比较。。。然后改变颜色。 这是我的更新代码 package carManagement; import java.awt.Color; import java.awt.Graphics; import java.awt.GridLayout; import javax.swing.JPanel;

这是一些更新的代码,我仍然有困难改变单个矩形的颜色。我想使用一个名为spaces[]的数组,它有15个元素,以决定汽车应该停在哪里。我在考虑以某种方式将矩形数组的最后一个元素与CarSpace数组进行比较。。。然后改变颜色。 这是我的更新代码

package carManagement;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import javax.swing.JPanel;


public class CarPanel extends JPanel 
{
CarSpace[] space= new CarSpace[15];
private final Rectangle[] rects;
private Color shapeColor = Color.RED;

    public CarPanel()
    {

        rects = new Rectangle[]
        {
            new Rectangle(25, 35, 30, 80,"8"),
            new Rectangle(65, 35, 30, 80,"7"),
            new Rectangle(105, 35, 30, 80,"6"),
            new Rectangle(145, 65, 30, 50,"2"),
            new Rectangle(185, 65, 30, 50,"1"),
            new Rectangle(25, 170, 30, 50,"13"),
            new Rectangle(65, 170, 30, 50,"12"),
            new Rectangle(105, 170, 30, 50,"11"),
            new Rectangle(145, 170, 30, 50, "3"),
            new Rectangle(190, 160, 92, 80, "Attendant Station"),
            new Rectangle(25, 280, 30, 50, "15"),
            new Rectangle(65, 280, 30, 50, "14"),
            new Rectangle(105, 280, 30, 80, "10"),
            new Rectangle(145, 280, 30, 80, "9"),
            new Rectangle(185, 280, 30, 50, "5"),
            new Rectangle(225, 280, 30, 50, "4")   

        };

    }//end carPark

    @Override
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        this.setBackground(Color.white);

        for (int i = 0; i<15; i++) {               

            if(space[i] == null){

                g.setColor(Color.BLACK);
                g.drawString(rects[i].number, rects[i].x, rects[i].y);
                g.setColor(Color.GREEN); 
                g.fillRect(rects[i].x, rects[i].y, rects[i].w, rects[i].h);
            }
            else{
                System.out.println("RED SPACESSS");
            }

        }//end for
    }//end paintComponent
}//end JPanel
packarmanagement;
导入java.awt.Color;
导入java.awt.Graphics;
导入java.awt.GridLayout;
导入javax.swing.JPanel;
公共类CarPanel扩展了JPanel
{
CarSpace[]space=新的CarSpace[15];
私有最终矩形[]矩形;
专用颜色shapeColor=Color.RED;
公共卡帕内尔酒店
{
矩形=新矩形[]
{
新矩形(25,35,30,80,“8”),
新矩形(65,35,30,80,“7”),
新矩形(105,35,30,80,“6”),
新矩形(145,65,30,50,“2”),
新矩形(185,65,30,50,“1”),
新矩形(25170,30,50,“13”),
新矩形(65、170、30、50、“12”),
新矩形(105、170、30、50、“11”),
新矩形(145、170、30、50、“3”),
新矩形(190、160、92、80,“服务员站”),
新矩形(25280,30,50,“15”),
新矩形(65280,30,50,“14”),
新矩形(105、280、30、80、“10”),
新矩形(145、280、30、80、“9”),
新矩形(185280 30 50,“5”),
新矩形(225、280、30、50、“4”)
};
}//终点停车场
@凌驾
公共组件(图形g){
超级组件(g);
这个.背景(颜色.白色);

对于(inti=0;i创建带有x、y、w、h的助手类矩形,并使用其数组进行绘制

public class CarPark extends JPanel {

private final Rectangle[] rects;

static class Rectangle {
    int x,y,w,h;

    public Rectangle(int x, int y, int w, int h) {
        this.x = x;
        this.y = y;
        this.w = w;
        this.h = h;
    }

}

public CarPark(){
    rects = new Rectangle[]{
        new Rectangle(25, 35, 30, 80),
        new Rectangle(50, 35, 30, 80)
    };

}

@Override
public void paintComponent(Graphics g){
    super.paintComponent(g);
    this.setBackground(Color.white);

    for (Rectangle rect : rects) {
        g.fillRect(rect.x, rect.h, rect.w, rect.h);
    }

}

}

请澄清——你到底被困在哪里?你把问题分解成了几个小步骤了吗?如果是的话,你到底挂断了哪一步?再详细一点会有很大帮助。此外,如果你使用数组或数组列表并在for循环中绘制东西,上面的代码可能会大大简化。用铅笔和纸找出如何用这个循环计算你的数字,因为你所需要的只是简单的数学。非常感谢!现在更清楚了,我能选择特定的矩形对象并根据它们的高度和宽度重新绘制它们吗?你可以将颜色作为属性添加到矩形中,并在绘制时使用它。因此,首先在矩形数组上迭代,找到一个这对汽车来说很好,而不是改变颜色。看看这段代码(你可以复制并运行它)这就是我所需要的!谢谢你,我相信使用参数中给出的尺寸将汽车添加到特定的矩形对象中不会那么困难。