【发布时间】:2020-07-24 23:30:05
【问题描述】:
我尝试使用以下类制作两个矩形:DrawRect,但是当我创建一个新的 DrawRect 对象时,它会替换旧对象的宽度和高度。
package MemDiagramVisualizer;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.*;
public class DrawRect extends JPanel {
private static int RECT_X;
private static int RECT_Y;
private static int RECT_WIDTH;
private static int RECT_HEIGHT;
public DrawRect(int w, int h) {
RECT_X = 20;
RECT_Y = 20;
RECT_WIDTH = w;
RECT_HEIGHT = h;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawRect(RECT_X, RECT_Y, RECT_WIDTH, RECT_HEIGHT);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(RECT_WIDTH + 2 * RECT_X, RECT_HEIGHT + 2 * RECT_Y);
}
}
JPanel visDisplay = new JPanel();
visDisplay.setLayout(new GridLayout(1,3));
DrawRect rec2 = new DrawRect(40,60);
visDisplay.add(rec2);
DrawRect rec = new DrawRect(100,600);
visDisplay.add(rec);
上面的代码在添加到框架内容窗格时会创建两个尺寸为 100,600 的矩形
【问题讨论】:
-
什么是
drawrec2?为了获得更好的帮助,请尽快发布正确的minimal reproducible example 来证明问题 -
它实际上是 DrawRect 的副本,这是我目前解决问题的方法:拥有一个具有相同代码但名称不同的单独类。我编辑了代码以解决我最初的问题
-
欢迎来到 Stack Overflow。请使用tour,阅读what's on-topic,阅读How to Ask a Good Question 和How to create a Minimal, Reproducible Example。后者(正如@Frakcool 所指出的)允许其他人重现您的问题,从而更快、更有效地帮助您:帮助他人帮助您。
标签: java swing graphics jpanel