栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java以一种方式绘制矩形

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java以一种方式绘制矩形

请记住,

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

你需要两件事…

  1. 当前鼠标点(或您的情况下的拖动点)
  2. 首次按下鼠标的点(锚点或原点)

您应该从

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();        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469565.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号