Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用2次鼠标单击绘制一个圆_Java_Swing - Fatal编程技术网

Java 使用2次鼠标单击绘制一个圆

Java 使用2次鼠标单击绘制一个圆,java,swing,Java,Swing,我需要用鼠标点击画一个简单的圆圈 第一次单击将显示中心 第二个是半径,圆圈由2画 提前谢谢好问题!下面的代码是一个自包含的示例(我使用拖动来定义半径): 生成上述屏幕截图的代码: 使用2次单击的示例: 这是如何正确地问这个问题:可能的副本只是提供一个帐单地址给我发送我的发票到。。。在你的问题上再努力一点,也许它会继续开放。我需要一个新的系统用于我的网上商店。提前谢谢,谢谢!有一个选项可以通过2次分次单击来完成此操作?当然!添加了使用两次点击的示例(但我认为在没有任何“拖动”的情况下,很难看到

我需要用鼠标点击画一个简单的圆圈 第一次单击将显示中心 第二个是半径,圆圈由2画


提前谢谢

好问题!下面的代码是一个自包含的示例(我使用拖动来定义半径):

生成上述屏幕截图的代码:
使用2次单击的示例:
这是如何正确地问这个问题:可能的副本只是提供一个帐单地址给我发送我的发票到。。。在你的问题上再努力一点,也许它会继续开放。我需要一个新的系统用于我的网上商店。提前谢谢,谢谢!有一个选项可以通过2次分次单击来完成此操作?当然!添加了使用两次点击的示例(但我认为在没有任何“拖动”的情况下,很难看到圆的大小),谢谢dacwe!你帮我做一个大项目
public static void main(String[] args) throws IOException {
    JFrame frame = new JFrame("Test");
    frame.add(new JComponent() {
        Point p; int r; 
        {
            addMouseListener(new MouseAdapter() {
                @Override
                public void mousePressed(MouseEvent e) {
                    p = e.getPoint(); r = 0; repaint();
                }
                public void mouseReleased(MouseEvent e) {
                    r = (int) Math.round(e.getPoint().distance(p));
                    repaint();
                }
            });
            addMouseMotionListener(new MouseMotionAdapter() {
                public void mouseDragged(MouseEvent e) {
                    r = (int) Math.round(e.getPoint().distance(p));
                    repaint();
                }
            });
            setPreferredSize(new Dimension(400, 300));
        }
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            if(p != null) g.drawOval(p.x - r, p.y - r, 2 * r, 2 * r); 
        }
    });
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
}
public static void main(String[] args) throws IOException {
    JFrame frame = new JFrame("Test");
    frame.add(new JComponent() {
        Point p1, p2;
        {
            addMouseListener(new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent e) {
                    if (p1 == null || p2 != null) { 
                        p1 = e.getPoint();
                        p2 = null;
                    } else {
                        p2 = e.getPoint();
                    } 
                    repaint();
                }
            });
            setPreferredSize(new Dimension(400, 300));
        }
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            if(p1 != null && p2 != null) {
                int r = (int) Math.round(p1.distance(p2));
                g.drawOval(p1.x - r, p1.y - r, 2 * r, 2 * r);
            }
        }
    });
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
}