我正在尝试绘制一个矩形。但我不确定如何在特定面板上绘画。想看一个例子,我如何提供绘制矩形的面板和位置。我有以下模板,我想看看要使用该类在任何面板上绘制矩形需要进行哪些修改。我的意图是使用面板的宽度和高度,并在该位置添加一个矩形。目标是能够在任何具有JPanel的任何地方使用此类。
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class DrawRectangle{
private int startX;
private int startY;
private int width;
private int height;
private Color color;
private JPanel panel;
public DrawRectangle(JPanel panel, int startX, int startY, int width, int height, Color color) {
this.startX = startX;
this.startY = startY;
this.width = width;
this.height = height;
this.color = color;
this.panel = panel;
}
public void paint(Graphics g) {
g.setColor(this.color);
g.fillRect(this.startX, this.startY, this.width, this.height);
g.drawRect(this.startX, this.startY, this.width, this.height);
}
}
您必须修改感兴趣的JPanel才能通过以下方式使用该代码:
ArrayList<DrawRectangle>
并在paintComponent的for循环中绘制它们。>例如,对于一个矩形:
public class DrawingPanel extends JPanel { private DrawRectangle drawRectangle; public DrawingPanel(DrawRectangle drawRectangle) { this.drawRectangle = drawRectangle; } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); if (drawRectangle != null) { drawRectangle.paint(g); } } }
并且对于许多矩形:
public class DrawingManyRectPanel extends JPanel { private List<DrawRectangle> drawRectangles; public DrawingManyRectPanel(List<DrawRectangle> drawRectangles) { this.drawRectangles = drawRectangles; } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); if (drawRectangles != null) { for (DrawRectangle rectangle : drawRectangles) { rectangle.paint(g); } } } }
在这些类中,重写了构造函数,以允许通过构造函数调用将矩形注入到该类中。对于第二个类,我还将添加一个方法,该方法允许添加其他矩形:
public void addRectangle(DrawRectangle rectangle) { drawRectangles.add(rectangle); repaint(); }
类似于删除矩形