在一个继承了JPanel的类上重写paint方法并改变背景颜色及其相对位置和大小,将其添加到窗体中,Jpanel上使用Graphics2D对象绘制的内容会消失
时间: 2024-03-17 10:42:57 浏览: 17
这种情况与使用`Graphics2D`对象进行绘制没有关系,可能是因为在重写`paint`方法时,没有调用父类的`paint`方法,导致原来的组件被覆盖而无法显示。在重写`paint`方法时,应该先调用父类的`paint`方法,然后再在其上面进行绘制。可以使用`super.paint(g)`来调用父类的`paint`方法,其中`g`是一个`Graphics`对象,用于绘制组件。
例如,以下是一个重写了`paint`方法并更改了背景颜色的`JPanel`类:
```java
public class MyPanel extends JPanel {
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g; // 将Graphics对象转换为Graphics2D对象
g2d.setColor(Color.BLUE);
g2d.fillRect(10, 10, 100, 100);
}
}
```
在将其添加到窗体中时,可以使用以下代码:
```java
JFrame frame = new JFrame();
MyPanel panel = new MyPanel();
frame.add(panel);
frame.setSize(300, 300);
frame.setVisible(true);
```
这样,就可以看到一个蓝色的矩形在`JPanel`上绘制出来了,同时原来的组件也可以正常显示。