gpt4 book ai didi

java - 使用 Java Swing 绘制多条线

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:52 24 4
gpt4 key购买 nike

我正在学习使用 Java Swing 绘制线条以绘制迷宫。我可以在指定位置画一条线,它显示得很好。但是当我想绘制多条线时,只有最后一条显示。我的代码:

public class LabyrinthGUI extends JFrame {
...
Line line;
for (int i = 0; i < 10; i++) {
line = new Line(i*25, 0, (i+1)*25, 50);
this.getContentPane().add(line);
}
}

public class Line extends JPanel{
private int x1, y1, x2, y2;

public Line(int x1, int y1, int x2, int y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
public void paintComponent (Graphics g) {
g.drawLine(x1, y1, x2, y2);

}

我可能需要刷新一些东西,以显示所有用 for 循环绘制的线,但不知道是什么。

最佳答案

为什么您的示例不起作用很简单; Swing 使用布局管理器将每个添加到 Container 的组件放置到屏幕上。这样,线条就不会重叠。

相反,使用一个 Component 来绘制每一行。绘制迷宫的解决方案是:

public class Labyrinth extends JPanel {

private final ArrayList<Line> lines = new ArrayList<Line>();

public void addLine(int x1, int y1, int x2, int y2) {
this.lines.add(new Line(x1, y1, x2, y2));
}

public void paintComponent(Graphics g) {
for(final Line r : lines) {
r.paint(g);
}
}
}

public static class Line {
public final int x1;
public final int x2;
public final int y1;
public final int y2;
public Line(int x1, int y1, int x2, int y2) {
this.x1 = x1;
this.x2 = x2;
this.y1 = y1;
this.y2 = y2;
}
public void paint(Graphics g) {
g.drawLine(this.x1, this.y1, this.x2, this.y2);
}
}

然后使用 Labyrinth.addLine 向您的迷宫添加线条。还;通过调用 setBounds 或类似方法为您的 Labyrinth 指定宽度和高度,因为 Swing 可能会裁剪图形。

关于java - 使用 Java Swing 绘制多条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2531352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com