Java,Swing,Awt - 在图像上绘制矩形并使其可见

我试图打开一个图像,在拖动鼠标的同时绘制一个矩形(鼠标拖动事件),并绘制最后一个矩形鼠标被释放。Java,Swing,Awt - 在图像上绘制矩形并使其可见

我实现拖动时绘制矩形,但我不能在此刻收集最终点的坐标以绘制矩形并存储其数据。你有什么想法来改进我的代码吗? (在背景中添加一个图像,即使在绘制几个图像时也会保留矩形)

我猜mousReleased Event可以帮助我,但我不知道该如何使用它。

编辑:在绘制第一个矩形后,如果绘制第二个矩形,我希望它保持可见。

package selectZone; 

import java.awt.event.*;

import javax.swing.*;

import java.awt.*;

public class Rec extends JFrame {

public Rec() {

super("rectangle");

setPreferredSize(new java.awt.Dimension(400, 400));

setDefaultCloseOperation(EXIT_ON_CLOSE);

JPanel pane = new Pan();

add(pane);

pack();

setVisible(true);

}

public static void main(String[] args) {

new Rec();

}

}

class Pan extends JPanel {

private Point origin;

private Point end;

private Point endFinal;

public Pan() {

MouseAdapter adapter = new Lis();

addMouseMotionListener(adapter);

addMouseListener(adapter);

}

class Lis extends MouseAdapter {

public void mouseDragged(MouseEvent e) {

end = e.getPoint();

repaint();

}

public void mousePressed(MouseEvent e) {

origin = e.getPoint();

}

public void mouseReleased(MouseEvent e, Graphics g) {

endFinal = e.getPoint();

g.clearRect(0, 0, getWidth(), getHeight());

g.setColor(Color.RED);

int x1 = (int) (origin.getX());

int y1 = (int) (origin.getY());

int x2 = (int) (endFinal.getX());

int y2 = (int) (endFinal.getY());

g.drawRect(x1, y1, x2 - x1, y2 - y1);

}

}

public void paint(Graphics g) {

g.clearRect(0, 0, getWidth(), getHeight());

g.setColor(Color.RED);

if (origin != null) {

int tmp;

int x1 = (int) (origin.getX());

int y1 = (int) (origin.getY());

int x2 = (int) (end.getX());

int y2 = (int) (end.getY());

if (x1 > x2) {

tmp = x1;

x1 = x2;

x2 = tmp;

}

if (y1 > y2) {

tmp = y1;

y1 = y2;

y2 = tmp;

}

g.drawRect(x1, y1, x2 - x1, y2 - y1);

}

}

}

感谢您的时间伙计。

回答:

我试图打开一个图像,画上有一个长方形

第一矩形上漆后,我想,如果我画的第二个它仍然可见。

保留矩形的ArrayList进行绘制。然后在组件的paintComponent()方法中显示图像,您可以遍历列表来绘制矩形。

查看DrawOnComponet来自Custom Painting Approaches的示例,以便开始您的工作示例。

该示例只是绘制矩形,因此您还需要绘制图像。或者你可以扩展JLabel,所以标签绘制图像,然后你画出矩形。

以上是 Java,Swing,Awt - 在图像上绘制矩形并使其可见 的全部内容, 来源链接: utcz.com/qa/258861.html

回到顶部