gpt4 book ai didi

java - 使用 Java (awt) 绘制多个矩形

转载 作者:行者123 更新时间:2023-11-30 05:14:31 25 4
gpt4 key购买 nike

这是我的代码:

class Ramka extends JFrame
{
public static final int SZEROKOSC = 800;
public static final int WYSOKOSC = 600;
Container powZawartosci = getContentPane();
public Ramka()
{
setSize(SZEROKOSC, WYSOKOSC);
setTitle("Siatka bryły by Paweł Mysior");
}
public void addRectangle(int startX, int startY, int sizeX)
{
drawRectangle rect = new drawRectangle(startX, startY, sizeX);
powZawartosci.add(rect);
}

class drawRectangle extends JPanel
{
private int a, startX, startY;
public drawRectangle(int startX, int startY, int a) // square
{
this.a = a;
this.startX = startX;
this.startY = startY;
}
public void paintComponent(Graphics g)
{
Rectangle2D rect = new Rectangle2D.Double(startX, startY, a, a);
Graphics2D g1 = (Graphics2D) g;
g1.draw(rect);
}
}

public class Main
{
public static void main(String[] args)
{
Ramka ramka = new Ramka();
ramka.addRectangle(200, 200, 50);
ramka.addRectangle(100, 100, 100);
ramka.addRectangle(300, 300, 150);
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ramka.setVisible(true);
}
}

我想要它做的是绘制三个矩形(抛开这样做的功能和意义,我还在学习)。

但它只绘制最后一个,从 300 和 300 开始。我不太明白 PaintComponent 的东西...

预先感谢您的帮助,保罗

最佳答案

我相信您正在相互添加三个 JPanel。这似乎是一种奇怪的绘制矩形的方法,但对于这种设计,您需要使用 LayoutManager

查看this链接,尝试学习。下面的代码应该可以解决问题。

...
Container powZawartosci = getContentPane();
public Ramka()
{
setSize(SZEROKOSC, WYSOKOSC);
setTitle("Siatka bryły by Paweł Mysior");
setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));//Only this line is inserted.
}
public void addRectangle(int startX, int startY, int sizeX)
{
drawRectangle rect = new drawRectangle(startX, startY, sizeX);
powZawartosci.add(rect);
}
...
<小时/>

在您的JPanel 衍生产品中,您可以跟踪需要绘制的矩形。下面的代码是我自发编写的,所以先检查一下是否有错误。

class RectangleDrawer extends JPanel{
ArrayList<Rectangle> rList = new ArrayList()<Rectangle>;
public void addRectangle(Rectangle rect){
rList.add(rect);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
for(int i=0; i<rList.size(); r++){
g.drawRectangle(rList.get(i));
}
}
}

关于java - 使用 Java (awt) 绘制多个矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2074352/

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