我正在尝试使用for循环创建一个笛卡尔网格。以下是我目前的代码的一部分;当我运行它时,它不会产生一系列线条,而是产生一个窗口,它看起来像是一个白色面板,它会大大减慢我的计算机速度。事实上,我必须启动任务管理器和结束任务,因为它甚至不会正常关闭。
public void paintComponent(Graphics g)
{
int width = getWidth();
int height = getHeight();
super.paintComponent(g);
int xstart=0;
for(int i = 1; i <= 10; i = i++)
{
xstart = i*(width/10);
g.drawLine(xstart, 0, xstart, height);
}
}
答案 0 :(得分:4)
实际上你需要两个for循环一个用于行而一个用于列而不是你只使用一个,这不足以绘制网格。
我画了网格作为我的作业,我已经和你分享了。它将帮助您在编码中找到问题......
import java.awt.*;
class Grids extends Canvas {
int width, height, rows, columns;
Grids(int w, int h, int r, int c) {
setSize(width = w, height = h);
rows = r;
columns = c;
}
@Override
public void paint(Graphics g) {
int k;
width = getSize().width;
height = getSize().height;
int htOfRow = height / (rows);
for (k = 0; k < rows; k++) {
g.drawLine(0, k * htOfRow, width, k * htOfRow);
}
int wdOfRow = width / (columns);
for (k = 0; k < columns; k++) {
g.drawLine(k * wdOfRow, 0, k * wdOfRow, height);
}
}
}
public class DrawGrids extends Frame {
DrawGrids(String title, int w, int h, int rows, int columns) {
setTitle(title);
Grids grid = new Grids(w, h, rows, columns);
add(grid);
}
public static void main(String[] args) {
new DrawGrids("Draw Grids", 200, 200, 2, 10).setVisible(true);
}
}
答案 1 :(得分:1)
for
循环中的增量错误。而不是
i = i++
应该只是
i++
postincrement运算符返回i,
的旧值,该值已分配回i,
,因此i
从未实际更改过。
答案 2 :(得分:0)
int xstart=0;
for(int i = 1; i <= 10; i++)
{
xstart = i*(height/10);
page.drawLine(xstart, 0, width, xstart);
}