【问题标题】:draw a rectangle over an image在图像上绘制一个矩形
【发布时间】:2014-03-21 17:08:58
【问题描述】:

我已尝试使用以下代码在图像(jLabel)上绘制矩形,但它没有绘制。请帮忙解决这个问题。

protected void paintComponent(Graphics g)
{

   this.paintComponent(g);
   g2 = (Graphics2D) g;

   g.drawRect(n,n1,40,40);

}



private void jLabel1MouseClicked(java.awt.event.MouseEvent evt)   
{                                     
    // TODO add your handling code here:
    k=0;
    f=jLabel1.getMousePosition();
    n=f.x;
    n1=f.y;
    n=n+p/2;
    n1=n1+(q/2-25);
    repaint(n,n1,40,40);     
}                                    

【问题讨论】:

  • jLabel1MouseClicked(java.awt.event.MouseEvent evt) 使用带有ActionListener 的未装饰按钮。它看起来像JLabel,但可以聚焦,允许助记符,还可以响应键盘输入。

标签: java image swing netbeans-7 rectangles


【解决方案1】:

你在那里有无限递归,并且会发生堆栈溢出。 这个:

this.paintComponent(g)

应该改为:

super.paintComponent(g);

【讨论】:

  • 先生,您能告诉我如何从图像中删除绘制的矩形吗?即第二次单击时将绘制一个新的矩形,同时要删除前一个矩形。
  • @spc 绘图具有破坏性 - 在 paintComponent() 中绘制的内容就是被绘制的所有内容。因此,您可以设置一个标志以在jLabel1MouseClicked() 中绘制一个矩形,并在每次单击时切换它。然后在paintComponent() 中,仅当该标志为真时才绘制矩形。每次点击还必须调用repaint(),以便显示/隐藏按预期工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-28
  • 2017-06-09
  • 2014-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多