1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java画矩形代码_Java以一种方式绘制矩形

java画矩形代码_Java以一种方式绘制矩形

时间:2021-11-19 18:29:33

相关推荐

java画矩形代码_Java以一种方式绘制矩形

小编典典

请记住,Rectangle(和Graphics#fillRect和Graphics#drawRect)不会渲染宽度/高度为负的矩形

你需要两件事…

当前鼠标点(或您的情况下的拖动点)

首次按下鼠标的点(锚点或原点)

您应该从mousePressed事件中获取锚点…

public void mousePressed(MouseEvent e) {

clickPoint = new Point(e.getPoint());

}

然后,您需要确定哪个点最小,并将其作为起点,哪个点最大,并将其用于尺寸。

public void mouseDragged(MouseEvent e) {

int minX = Math.min(e.getX(), clickPoint.x);

int minY = Math.min(e.getY(), clickPoint.y);

int maxX = Math.max(e.getX(), clickPoint.x);

int maxY = Math.max(e.getY(), clickPoint.y);

selection.x = minX;

selection.y = minY;

selection.width = maxX - minX;

selection.height = maxY - minY;

repaint();

}

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.EventQueue;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Point;

import java.awt.Rectangle;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.UIManager;

import javax.swing.UnsupportedLookAndFeelException;

public class SelectionExample {

public static void main(String[] args) {

new SelectionExample();

}

public SelectionExample() {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {

}

JFrame frame = new JFrame("Testing");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setLayout(new BorderLayout());

frame.add(new TestPane());

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}

});

}

public class TestPane extends JPanel {

private Rectangle selection = new Rectangle();

private Point clickPoint;

public TestPane() {

MouseAdapter ma = new MouseAdapter() {

@Override

public void mouseDragged(MouseEvent e) {

int minX = Math.min(e.getX(), clickPoint.x);

int minY = Math.min(e.getY(), clickPoint.y);

int maxX = Math.max(e.getX(), clickPoint.x);

int maxY = Math.max(e.getY(), clickPoint.y);

selection.x = minX;

selection.y = minY;

selection.width = maxX - minX;

selection.height = maxY - minY;

repaint();

}

@Override

public void mousePressed(MouseEvent e) {

clickPoint = new Point(e.getPoint());

}

};

addMouseListener(ma);

addMouseMotionListener(ma);

}

@Override

public Dimension getPreferredSize() {

return new Dimension(200, 200);

}

@Override

protected void paintComponent(Graphics g) {

super.paintComponent(g);

Graphics2D g2d = (Graphics2D) g.create();

if (selection.width > 0 && selection.height > 0) {

g2d.setColor(new Color(0, 0, 255, 64));

g2d.fill(selection);

g2d.setColor(Color.BLUE);

g2d.draw(selection);

}

g2d.dispose();

}

}

}

-09-16

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。