【问题标题】:remove rectangle drawn over an image删除在图像上绘制的矩形
【发布时间】:2014-03-13 18:26:53
【问题描述】:

我在jLabel 中显示了一张图片。单击图像的任何部分时,将绘制一个 40x40 的矩形。现在我想在按下 REMOVE(jButton) 时从图像中删除绘制的矩形。我试过下面的代码

    public void paint (Graphics g) {
       g2 = (Graphics2D) g;

       g2.clearRect(n,n1, 40,40 ); 

    }

     private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:

        repaint(n,n1,40,40);
    }

它只是用背景色填充矩形而不是删除。有没有什么方法可以在不填充任何颜色的情况下删除矩形?即保留原始图像本身?

【问题讨论】:

标签: java swing netbeans-7 jlabel rectangles


【解决方案1】:

自定义绘画是在标签的paintCompnent(..) 方法中完成的,而不是在paint() 方法中完成的。您还应该调用 super.paintComponent(g) 作为第一条语句。

在您的情况下,听起来您需要一个布尔变量来控制绘制矩形的时间。可能是这样的:

@Override
protected void paintComponent(Graphics g)
{
    super.paintComponent(g);

    if (paintRectangle)
        // paint the rectangle
}

现在在 ActionListener 中,您只需将 paintRectangle 变量设置为 false 并在组件上调用 repaint()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 2020-05-08
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多