Eine Linie zeichnen

Sergunja

Grünschnabel
Hi
ich will zwischen zwei Punkten eine Linie zeichnen, um zu erfahren, wie weit die voneinander liegen. Dabei will ich einen punkt mit Maus einklicken und zum anderen ziehen, auf Linie dabei muss die Entfernung gezeigt werden.
Ob es im Java möglich ist, oder wo kann man was darüber nachlesen?

Danke voraus
 
Nachlesen kann man sowas meist in der API. ;)
Es gibt in einer Graphics Klasse drawLine(...), die zeichnet die Linie von Punkt a nach Punkt b, jeweils mit x und y Koordinaten. Von daher sollte es problemlos möglich sein, die Länge zu bestimmen.
 
Hallo!

siehe:
Code:
/*
 * Created on 13.10.2004
 */
package de.tutorials;

import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Stroke;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * @author Darimont
 *  
 */
public class Test07 extends JFrame {

    private Point a, b;

    private JButton btnCmd;

    private JPanel panel;

    private final Stroke stroke = new BasicStroke(2.0F);

    public Test07() {
        super("Test07");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        panel = new JPanel() {
            private boolean flag;
            {
                setPreferredSize(new Dimension(320, 240));
                addMouseListener(new MouseAdapter() {
                    public void mousePressed(MouseEvent evt) {
                        if (flag) {
                            a = evt.getPoint();
                        } else {
                            b = evt.getPoint();
                        }
                        flag = !flag;
                        Test07.this.panel.repaint();
                    }
                });
            }

            public void paintComponent(Graphics g) {
                super.paintComponent(g);
                if (a != null && b != null) {
                    Graphics2D g2d = (Graphics2D) g;
                    g2d.setStroke(stroke);
                    g2d.drawLine(a.x, a.y, b.x, b.y);
                }
            }
        };

        btnCmd = new JButton("Calc distance!");
        btnCmd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                if (a != null && b != null) {
                    System.out.println("A: " + a);
                    System.out.println("B: " + b);
                    System.out.println(a.distance(b));
                }
            }
        });

        Container c = getContentPane();
        c.add(panel, BorderLayout.CENTER);
        c.add(btnCmd, BorderLayout.SOUTH);

        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        new Test07();
    }
}

Gruß Tom
 
Zurück