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