1

我已经使用该paintComponent方法在面板上绘制形状。但是,每次我最小化框架或调整它的大小时,它们都会消失。不确定要添加到我的代码中的内容。

   public class ShapePanel extends JPanel implements ActionListener, MouseListener{

    int a,b,c,d;
    Graphics2D g2D;
    private Rectangle2D rect = new Rectangle2D(a,b,c-a,d-b);

    public ShapePanel(){

    addMouseListener(this);
    setLayout(new GridLayout());
}

    public void paintComponent(Graphics g) {

    g2D = (Graphics2D) g;
    g2D.draw(rect);
    repaint();

}


   //get methods for coordinates: MousePressed, MouseReleased
4

1 回答 1

5

不要repaint()在方法下调用paintComponent。另外,在你的方法中做super.paintComponent(g)第一件事。paintComponent

更新:您的代码有很多编译错误。但是,请参阅下面的更改列表:

  • new Rectangle2D(a, b, c, d)应该是新Rectangle2D.Float(10, 10, 100, 100);的,或者无论如何,a、b、c 和 d 应该有一些值,否则它们都为零,所以没有矩形
  • 在定义和构造函数中将类命名为相同
  • 实施mouseClickedmouseEnteredmouseExited
  • g2D.draw()从类中删除actionPerformed并且不保留对的引用g2D

如果您需要,我有完整的代码。

于 2013-01-23T11:05:26.183 回答