Linien in ein Koordinatensystem zeichen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Weiss jemand wo ich gut verständliche Programmbeispiele für folgendes Problem herbekomme:

Ich möchte das der User mit der Maus Linien in ein grafisch dargestelltes Koordinatensystem zeichnen kann!

mit freundlichen Grüssen,
Anne
 

Illuvatar

Top Contributor
Hm. Wie meinst du das?

Du köntest z.B. einen MouseMotionListener machen, einen MouseListener, die Koordinaten der Start und Endpunkte als Point2D-Objekte in einem Vektor speichern und in der paint-Methode zeichnen (Edit: und auch das Koordinatensystem).

Ähnilich wie Bsp. 29.4 im Javabuch:

Code:
/* Listing2904.java */

import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Listing2904
extends Frame
{
  private Vector drawlist;
  private Rectangle actrect;

  public static void main(String[] args)
  {
    Listing2904 wnd = new Listing2904();
    wnd.setLocation(200,200);
    wnd.setSize(400,300);
    wnd.setVisible(true);
  }

  public Listing2904()
  {
    super("Rechtecke zeichnen");
    drawlist = new Vector();
    actrect = new Rectangle(0,0,0,0);
    addWindowListener(new MyWindowListener());
    addMouseListener(new MyMouseListener());
    addMouseMotionListener(new MyMouseMotionListener());
  }

  public void paint(Graphics g)
  {
    Rectangle r;
    Enumeration e;

    for (e = drawlist.elements(); e.hasMoreElements(); ) {
      r = (Rectangle)e.nextElement();
      g.drawRect(r.x, r.y, r.width, r.height);
    }
    if (actrect.x > 0 || actrect.y > 0) {
      g.drawRect(
        actrect.x,
        actrect.y,
        actrect.width,
        actrect.height
      );
    }
  }

  class MyMouseListener
  extends MouseAdapter
  {
    public void mousePressed(MouseEvent event)
    {
      actrect = new Rectangle(event.getX(),event.getY(),0,0);
    }

    public void mouseReleased(MouseEvent event)
    {
      if (actrect.width > 0 || actrect.height > 0) {
        drawlist.addElement(actrect);
      }
      repaint();
    }
  }

  class MyMouseMotionListener
  extends MouseMotionAdapter
  {
    public void mouseDragged(MouseEvent event)
    {
      int x = event.getX();
      int y = event.getY();
      if (x > actrect.x && y > actrect.y) {
        actrect.width = x - actrect.x;
        actrect.height = y - actrect.y;
      }
      repaint();
    }
  }

  class MyWindowListener
  extends WindowAdapter
  {
    public void windowClosing(WindowEvent event)
    {
      setVisible(false);
      dispose();
      System.exit(0);
    }
  }
}
 
G

Guest

Gast
Ja sowas in der Art, nur wo man Linien in ein Koordinatensystem(grafisch dargestellt) anlegen kann!
 
G

Guest

Gast
hat keiner sonst noch ein Beispiel oder ne Idee wie ich das machen könnte?
 

Illuvatar

Top Contributor
Ich weiß nicht genau, wie du das meinst.

Du könntest ja in der paint Methode einfach noch vorher das Koordinatensystem zeichnen, oder?
 
G

Guest

Gast
Joa so was in der Art! Nur das Problem wie zeichne ich das da rein? Und 2. wie gebe ich das dann so an das er genau auf den Koordinatenpunkten nur was zeichnen darf?
 

Illuvatar

Top Contributor
Jetzt beginne ich zu verstehen, was du meinst.

Du könntest ja in einem GridLayout viele Einzelkomponenten machen, die alle ein Kreuz zeichnen.
Damit man erkennt auf welchem man ist, könnte man mit einem MouseListener (mouseEntered) das aktuelle Kreuz rot zeichnen.
Und wenn man auf eines dieser Komponenten klickt, wird der Startpunkt gemerkt, wenn irgendwo mouseReleased aufgerufen wird, das als Endpunkt, und die Koordinaten der Mittelpunkte der beiden Komponenten werden in einem Vector gespeichert.
Die so gespeicherten Rechtecke dann in der paint-Methode speichern.
 
B

Beni

Gast
@Illuvatar
Systemressourcen, schlürf und weg waren sie... :bae:

Genug über andere Leute lustiggemacht, jetzt muss ich auch zeigen, dass es anders geht:

Ich hab mal was zusammengehackt. Das ist sicher noch kein Zeichnungsprogramm, aber mal ein Anfang :wink:
Einfach in eine Datei "Main.java" kopieren, und ausführen.
Code:
package forum;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.util.Vector;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.event.MouseInputAdapter;

public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.getContentPane().add( new DrawPanel() );
        frame.setBounds( 20, 20, 500, 500 );
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame.setVisible( true );
    }
}

class DrawPanel extends JComponent{
    public static final float MOD_X = 30.0f;
    public static final float MOD_Y = 30.0f;
    
    private Vector lines = new Vector();
    
    public DrawPanel(){
        Listener listener = new Listener();
        addMouseListener( listener );
        addMouseMotionListener( listener );
    }
    
    public synchronized void paintComponent( Graphics g ){
        int width = getWidth();
        int height = getHeight();
        
        g.setColor( Color.BLACK );
        g.fillRect( 0, 0, width, height );
        
        g.setColor( Color.GRAY );
        
        for( int x = 0; x <= width; x += (int)(MOD_X) )
            g.drawLine( x, 0, x, height );
        
        for( int y = 0; y <= height; y += (int)(MOD_Y) )
            g.drawLine( 0, y, width, y );
        
        for( int i = 0, n = lines.size(); i<n; i++ ){
            ((Line)lines.get( i )).paint( g, MOD_X, MOD_Y );
        }
    }
    
    private class Listener extends MouseInputAdapter{
        private Line current;
        
        public Listener(){}
        public void mousePressed(MouseEvent e) {
            Point pos = transform( e.getX(), e.getY() );
            current = new Line( pos.x, pos.y );
            lines.add( current );
            repaint();
        }
        
        public void mouseDragged(MouseEvent e) {
            if( current != null ){
                current.setEndPos( transform( e.getX(), e.getY() ) );
                repaint();
            }
        }
        
        
        public void mouseReleased(MouseEvent e) {
            mouseDragged( e );
            current = null;
        }
        
        public Point transform( int x, int y ){
            return new Point( Math.round(x / MOD_X), Math.round( y / MOD_Y ) );
        }
    }
}

class Line{
    private int x1, y1, x2, y2;
    private Color color;
    
    public Line( int x, int y ){
        x1 = x;
        y1 = y;
        x2 = x;
        y2 = y;
        color = new Color( (int)(Math.round( Math.random() * 255)),
                (int)(Math.round( Math.random() * 255)),
                (int)(Math.round( Math.random() * 255)));
    }
    
    public void setEndPos( Point pos ){
        x2 = pos.x;
        y2 = pos.y;
    }
    
    public void paint( Graphics g, float modX, float modY ){
        g.setColor( color );
        g.drawLine( Math.round( modX * x1 ),
                Math.round( modY * y1 ),
                Math.round( modX * x2 ),
                Math.round( modY * y2 ));
    }
}

mfg Beni
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Mehrere Linien zeichnen AWT, Swing, JavaFX & SWT 8
T Tic Tac Toe - GUI Linien zeichnen AWT, Swing, JavaFX & SWT 14
S Parallele Linien zeichnen AWT, Swing, JavaFX & SWT 5
J Linien auf JPanel zeichnen AWT, Swing, JavaFX & SWT 3
llabusch Linien in JPanel zeichnen AWT, Swing, JavaFX & SWT 6
V JFreechart: In Linechart Linien einzeichnen und Bereiche färben AWT, Swing, JavaFX & SWT 4
S 2D-Grafik MouseDragged Linien zeichnen AWT, Swing, JavaFX & SWT 4
M Zeichnen ohne vorherige Linien zu löschen AWT, Swing, JavaFX & SWT 2
I ContentPane lösche linien AWT, Swing, JavaFX & SWT 1
1 Buttons in Kombination mit Linien AWT, Swing, JavaFX & SWT 3
A 2D-Grafik Dickere Linien AWT, Swing, JavaFX & SWT 4
C Linien über GridLayout zeichnen AWT, Swing, JavaFX & SWT 3
D JCombobox mit Linien Styles AWT, Swing, JavaFX & SWT 4
M 2D-Grafik Mehrere Linien (nacheinander) übereinander Zeichnen AWT, Swing, JavaFX & SWT 6
P SWT Linien / Pfeile zeichnen in SWT? AWT, Swing, JavaFX & SWT 3
O Sättigung bei Linien AWT, Swing, JavaFX & SWT 2
P Swing Skalieren mit DrawImage macht Linien kaputt AWT, Swing, JavaFX & SWT 6
J 2D-Grafik Fehler beim Überzeichnen von Linien AWT, Swing, JavaFX & SWT 11
K Swing JTable - vertikale Gitter-Linien AWT, Swing, JavaFX & SWT 2
1 Eigene Component in JScrollBar + fixe Linien??? AWT, Swing, JavaFX & SWT 2
C AWT: Pixel für Pixel Linien auf Panel zeichnen AWT, Swing, JavaFX & SWT 2
U SWT Linien verschwinden nach Verschieben AWT, Swing, JavaFX & SWT 3
P [gelöst] Verschiebbare Komponenten mit Linien verbinden AWT, Swing, JavaFX & SWT 2
S [Swing] Wie zeichne ich neue Linien AWT, Swing, JavaFX & SWT 3
P Problem beim Linien ziehen! AWT, Swing, JavaFX & SWT 12
Bierhumpen Linien anklicken? AWT, Swing, JavaFX & SWT 9
X Dynamische linien (Position und Länge) AWT, Swing, JavaFX & SWT 4
B Urspungskoordinaten von Linien ändern AWT, Swing, JavaFX & SWT 3
M Farbige Linien zeichnen AWT, Swing, JavaFX & SWT 3
T Linien zeichnen und wieder löschen AWT, Swing, JavaFX & SWT 9
Z Und schon wieder die Linien (Problem beim überzeichnen) AWT, Swing, JavaFX & SWT 4
G Linien Diagram in SWT AWT, Swing, JavaFX & SWT 4
S JTable - Breite der Linien AWT, Swing, JavaFX & SWT 8
F Zeichen von Linien, Rechtecken, zb wie in paint AWT, Swing, JavaFX & SWT 2
M gestrichelte Linien bzw. Pfeile AWT, Swing, JavaFX & SWT 2
M Linien zeichnen und anklicken AWT, Swing, JavaFX & SWT 2
B JTree + Linien im Windows L&F AWT, Swing, JavaFX & SWT 9
L JavaFX KoordinatenSystem AWT, Swing, JavaFX & SWT 1
M Koordinatensystem für Projektorientiertes Arbeiten AWT, Swing, JavaFX & SWT 2
A Swing Koordinatensystem wird gezeichnet verschwindet aber und die Einteilungen bleiben nicht bestehen AWT, Swing, JavaFX & SWT 5
S Koordinatensystem wird nicht gezeichnet AWT, Swing, JavaFX & SWT 5
J Koordinatensystem AWT, Swing, JavaFX & SWT 2
S Koordinatensystem AWT, Swing, JavaFX & SWT 6
El_Lobo Swing bei Update von Graphik Koordinatensystem nicht jedesmal neu zeichnen AWT, Swing, JavaFX & SWT 2
K OpenGL koordinatensystem AWT, Swing, JavaFX & SWT 7
M Graphics auf JFrame Koordinatensystem AWT, Swing, JavaFX & SWT 3
U Swing KSKB: JComboBox Koordinatensystem AWT, Swing, JavaFX & SWT 3
L SWT Draw2d und Gef Koordinatensystem und Gitternetz? AWT, Swing, JavaFX & SWT 5
L SWT Koordinatensystem in Swt? AWT, Swing, JavaFX & SWT 4
S AWT Schiffeversenken-Koordinatensystem wird nicht richtig angezeigt. AWT, Swing, JavaFX & SWT 6
C AWT Graphic 2D Frage zum Koordinatensystem AWT, Swing, JavaFX & SWT 6
M Aktuelle Mausposition im Koordinatensystem AWT, Swing, JavaFX & SWT 3
G Werte in Koordinatensystem zeichnen AWT, Swing, JavaFX & SWT 11
H Darstellung einer Kurve im Koordinatensystem AWT, Swing, JavaFX & SWT 8
L Java 3d Koordinatensystem AWT, Swing, JavaFX & SWT 3
D JPanel Koordinatensystem -> Ursprung verändern. AWT, Swing, JavaFX & SWT 2
C Koordinatensystem drehen AWT, Swing, JavaFX & SWT 3
H funktionen in ein koordinatensystem zeichen AWT, Swing, JavaFX & SWT 5
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
_user_q Gibt es eine Möglichkeit, in Java alle möglichen Zeichen automatisch tippen zu lassen? AWT, Swing, JavaFX & SWT 13
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
F AWT awt KeyEvent - Zeichen direkt nach Eingabe löschen AWT, Swing, JavaFX & SWT 2
L Swing Tastatur zeichen AWT, Swing, JavaFX & SWT 4
A 2D-Grafik Zeichen werden über unabhängingen JRadioButton nicht gefüllt AWT, Swing, JavaFX & SWT 28
I JOptionPane maximale Zeichen einstellen AWT, Swing, JavaFX & SWT 2
L JavaFX ASCII Zeichen /char von KeyEvent erhalten AWT, Swing, JavaFX & SWT 5
C Zeichen eines 6 -Eckes AWT, Swing, JavaFX & SWT 1
S Zeichen ohne paint-Methode AWT, Swing, JavaFX & SWT 2
C JavaFX Tiefgestellte Zeichen in fxml AWT, Swing, JavaFX & SWT 2
B EventHandler für durch Tastenkombination erzeugte Zeichen AWT, Swing, JavaFX & SWT 3
L Ausgabe in JEditorPane mittels HTMLEditorKit zeigt auf bestimmten Systemen falsche Zeichen AWT, Swing, JavaFX & SWT 1
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
A Zeichen-Steuerelement in Swing AWT, Swing, JavaFX & SWT 0
kaoZ Swing Aktives Zeichen für Spieleprogrammierung ? AWT, Swing, JavaFX & SWT 8
D Swing Manuellen Kreis zeichen AWT, Swing, JavaFX & SWT 22
U Label zeigt nicht überall HTML Zeichen AWT, Swing, JavaFX & SWT 3
R einzelne Zeichen in jTable einlesen AWT, Swing, JavaFX & SWT 10
S SWT [TextBox] Bestimmtes Zeichen entfernen unterbinden AWT, Swing, JavaFX & SWT 3
P readLine solange es mit einem bestimmten Zeichen anfängt AWT, Swing, JavaFX & SWT 5
P Komische Zeichen beim Abspeichern von TextFelder AWT, Swing, JavaFX & SWT 2
Jats Zeichen auf mehrere JPanels AWT, Swing, JavaFX & SWT 7
P 2D-Grafik versch. Rectangles aus array von textfelder zeichen AWT, Swing, JavaFX & SWT 6
DEvent Swing JTextField Anzahl an sichtbaren Zeichen AWT, Swing, JavaFX & SWT 4
D JLabel und JPanel -> Neu zeichen?! oO AWT, Swing, JavaFX & SWT 2
E jTextFiled max 160 Zeichen? AWT, Swing, JavaFX & SWT 4
Luk10 Swing Problem mit Zeichen-Thread AWT, Swing, JavaFX & SWT 8
A Rechteck zeichen AWT, Swing, JavaFX & SWT 4
Q AWT Choice ein Zeichen hinzufügen AWT, Swing, JavaFX & SWT 4
J 2D-Grafik Textbasiertes 2D Spiel, jedes Zeichen manipulierbar AWT, Swing, JavaFX & SWT 7
R 2D-Grafik auf JPanel zeichen - ohne @Override paintComponent AWT, Swing, JavaFX & SWT 6
S Thread.sleep() in einer methode fürs zeichen AWT, Swing, JavaFX & SWT 3
T Zeichen/char in Bild umwandeln und darstellen AWT, Swing, JavaFX & SWT 10
2 Bücher über Zeichen und Baumalgorithmen AWT, Swing, JavaFX & SWT 5
T Zeichen zählen JTextPane AWT, Swing, JavaFX & SWT 4
F Zeichen per Menuitem funktioniert nicht AWT, Swing, JavaFX & SWT 2
V Nur zulässige Zeichen in JTable-Zellen eintragen können AWT, Swing, JavaFX & SWT 2
P Swing Probleme beim Zeichen AWT, Swing, JavaFX & SWT 6
aze JTextfield nur so breit dass alle zeichen sichtbar sind AWT, Swing, JavaFX & SWT 2
3TageBart Ebenen in Zeichen-Programm implementieren AWT, Swing, JavaFX & SWT 9
P Zeichen abhängig davon, ob sich eine Variable geändert hat AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben