Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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代码不工作。使用循环在美国国旗上绘制条纹_Java_Swing - Fatal编程技术网

Java代码不工作。使用循环在美国国旗上绘制条纹

Java代码不工作。使用循环在美国国旗上绘制条纹,java,swing,Java,Swing,我正在尝试使用java绘制美国国旗。我几乎用很多变量完成了所有这些编码。它至少应该显示条纹、蓝色框和星星(本例中为椭圆形)。但是,当我通过编译器运行代码并运行它时,它显示的只是一个白色背景,顶部有一条红色条纹。我可以得到一些帮助,看看我的错误在哪里吗?我什么都试过了 代码如下: import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Graphics; import java.awt.Color; public

我正在尝试使用java绘制美国国旗。我几乎用很多变量完成了所有这些编码。它至少应该显示条纹、蓝色框和星星(本例中为椭圆形)。但是,当我通过编译器运行代码并运行它时,它显示的只是一个白色背景,顶部有一条红色条纹。我可以得到一些帮助,看看我的错误在哪里吗?我什么都试过了

代码如下:

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

public class UsFlag extends JPanel {

int w = getWidth();
int h = getHeight();
int numberStripes = 13;
int numStarCol = 8;
int numStarRow = 6;
int stripeHeight = h/numberStripes;
int boxWidth = (int)(w*0.4);
int boxHeight = 7 * stripeHeight;
int starWidth = boxWidth/numStarCol;
int starHeight = boxHeight/numStarRow;

/*public UsFlag() {
    //ask user to enter number of stripes, star columns, and star rows
}*/


@Override
public void paintComponent(Graphics g) {
    int w = getWidth();
    int h = getHeight();

    //Background
    g.setColor(Color.RED);
    g.fillRect(0, 0, w, h);

    //Stripes
    g.setColor(Color.WHITE);
    for (int i = 0; i < numberStripes; i += 1) {
        g.fillRect(0,stripeHeight, w, stripeHeight);
        stripeHeight = stripeHeight + 45;
    }

    //Blue Rect
    g.setColor(Color.BLUE);
    g.fillRect(0, 0, boxWidth, boxHeight);

    //stars
    int y = 0;
    int x = 0;
    for (int j = 0; j < numStarRow; j++){
        for (int i = 0; i < numStarCol; i++){
            g.setColor(Color.WHITE);
            g.fillOval(5, 5, starWidth, starHeight);
            x += starWidth;
        }
        y += starHeight;
        x = 0;
    }

}

public static void main(String[] args) {
    JFrame window = new JFrame();
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setSize(400, 400);
    window.setContentPane(new UsFlag());
    window.setVisible(true);
}
}
import javax.swing.JFrame;
导入javax.swing.JPanel;
导入java.awt.Graphics;
导入java.awt.Color;
公共类UsFlag扩展了JPanel{
int w=getWidth();
inth=getHeight();
int numberStripes=13;
int numStarCol=8;
int numStarRow=6;
int stripeHeight=h/numberStripes;
整型箱宽=(整型)(w*0.4);
int-boxHeight=7*stripeHeight;
int starWidth=boxWidth/numStarCol;
int starHeight=boxHeight/numStarRow;
/*公共旗帜(){
//要求用户输入条纹数、星形列数和星形行数
}*/
@凌驾
公共组件(图形g){
int w=getWidth();
inth=getHeight();
//背景
g、 setColor(Color.RED);
g、 fillRect(0,0,w,h);
//条纹
g、 setColor(Color.WHITE);
对于(int i=0;i
方法和方法的前两个参数被视为要绘制对象的坐标(x&y)。这意味着对于x,您需要放置一个整数像素值,以确定对象的边从水平平面开始绘制的位置,对于y,您需要放置一个整数像素值,以确定对象的顶部边缘从垂直平面开始绘制的位置。例如,对于fillRect():

g.fillRect(20, 20, 100, 30);


其他两个参数用于待绘制对象的宽度(w)和高度(h),以像素为单位。使用for循环中的变量i(例如,y=i+30)在彼此下方绘制对象。更多信息。

提示:只需在每次迭代中添加索引乘以条纹高度即可。它将增加X值。