# Linien und Kreise



## cholbae (6. Nov 2013)

Hallo Java Experten

Für die Lösung von einem Geocache sind Java-Kentnisse gefordert. Leider habe ich absolut keine Ahnung von Java Programmierung. Deshalb würde ich gerne folgende Frage stellen und hoffe, dass ich mein Thema am richtigen Ort erstellt habe. 

Meine Frage :

Ich habe eine Liste mit 4- und 6-stelligen Zahlen. Wenn mein Lösungsansatz richtig ist, werden diese folgendermassen in Java verwendet :  

g.roundRect(20, 160, 10, 10, 270, 180);
g.roundRect(40, 80, 10, 10, 0, 180);
etc

und
g.drawLine(20, 40, 20, 60);
g.drawLine(20, 40, 30, 60);
g.drawLine(20, 80, 20, 100);
etc

Welche weiteren Befehle sind notwendig, bzw. wie sieht der Java Code / Sourcecode aus, dass die Linien (Farbe egal) und Kreise (bzw. Teile davon) (Farbe egal) in einem Fenster dargestellt werden ?

Am Schluss sollte ein Text mit Buchstaben und Zahlen entstehen, in dem etwas in der Art : N 47° 30.223 E 007° 34.020 enthalten ist.

Vielen Dank!


----------



## cholbae (6. Nov 2013)

Ich habe von einem Kollegen noch eine Lösungsidee bekommen. Leider funktioniert sie noch nicht, wenn ich sie z.B. hier ausprobiere : Online Java compiler - Java online compiler - Java online editor - Java online compiler and run | Javalaunch.com.

Lösungsidee :

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class HelloWorldApplet extends Applet{
public static void main(String[] args){
Frame frame = new Frame("Roseindia.net");
frame.setSize(400,200);
Applet app = new HelloWorldApplet();
frame.add(app);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void paint(Graphics g){
g.drawRoundRect(20, 160, 10, 10, 270, 180);
g.drawRoundRect(40, 80, 10, 10, 0, 180);
g.drawRoundRect(40, 90, 10, 10, 180, 180);
g.drawRoundRect(40, 160, 10, 10, 0, 180);
g.drawRoundRect(40, 170, 10, 10, 180, 180);
g.drawRoundRect(60, 80, 10, 10, 0, 180);
g.drawRoundRect(60, 90, 10, 10, 180, 180);
g.drawRoundRect(77, 40, 7, 7, 0, 360);
g.drawRoundRect(80, 160, 10, 10, 270, 180);
g.drawRoundRect(90, 40, 10, 10, 0, 180);
g.drawRoundRect(97, 80, 7, 7, 0, 360);
g.drawRoundRect(110, 40, 10, 10, 0, 360);
g.drawRoundRect(110, 50, 10, 10, 180, 180);
g.drawRoundRect(110, 120, 10, 10, 270, 180);
g.drawRoundRect(125, 58, 3, 3, 0, 360);
g.drawRoundRect(128, 80, 10, 10, 270, 180);
g.drawRoundRect(128, 90, 10, 10, 270, 180);
g.drawRoundRect(140, 50, 10, 10, 270, 180);
g.drawRoundRect(145, 98, 3, 3, 0, 360);
g.drawRoundRect(160, 40, 10, 10, 0, 180);
g.drawRoundRect(160, 90, 10, 10, 270, 180);
g.drawRoundRect(160, 160, 20, 20, 90, 180);
g.drawRoundRect(200, 80, 10, 10, 0, 360);
g.drawRoundRect(200, 90, 10, 10, 180, 180);
g.drawLine(20, 40, 20, 60);
g.drawLine(20, 40, 30, 60);
g.drawLine(20, 80, 20, 100);
g.drawLine(20, 80, 30, 80);
g.drawLine(20, 90, 25, 90);
g.drawLine(20, 100, 30, 100);
g.drawLine(20, 120, 20, 140);
g.drawLine(20, 140, 30, 140);
g.drawLine(20, 160, 20, 180);
g.drawLine(20, 160, 24, 160);
g.drawLine(20, 170, 24, 170);
g.drawLine(20, 170, 30, 180);
g.drawLine(30, 40, 30, 60);
g.drawLine(40, 52, 55, 52);
g.drawLine(40, 85, 40, 95);
g.drawLine(40, 120, 40, 140);
g.drawLine(40, 120, 50, 120);
g.drawLine(40, 130, 45, 130);
g.drawLine(40, 140, 50, 140);
g.drawLine(40, 165, 40, 175);
g.drawLine(50, 40, 40, 52);
g.drawLine(50, 48, 50, 60);
g.drawLine(50, 85, 50, 95);
g.drawLine(50, 165, 50, 175);
g.drawLine(60, 40, 70, 40);
g.drawLine(60, 52, 68, 52);
g.drawLine(60, 85, 60, 95);
g.drawLine(60, 120, 60, 140);
g.drawLine(60, 160, 60, 180);
g.drawLine(60, 170, 70, 170);
g.drawLine(70, 40, 60, 60);
g.drawLine(70, 85, 70, 95);
g.drawLine(70, 120, 80, 120);
g.drawLine(70, 160, 70, 180);
g.drawLine(75, 120, 75, 140);
g.drawLine(80, 80, 90, 80);
g.drawLine(80, 92, 88, 92);
g.drawLine(80, 160, 80, 180);
g.drawLine(80, 160, 84, 160);
g.drawLine(80, 170, 84, 170);
g.drawLine(80, 170, 90, 180);
g.drawLine(90, 60, 100, 60);
g.drawLine(90, 80, 80, 100);
g.drawLine(90, 120, 90, 140);
g.drawLine(90, 120, 100, 120);
g.drawLine(90, 130, 95, 130);
g.drawLine(90, 140, 100, 140);
g.drawLine(100, 45, 90, 60);
g.drawLine(100, 160, 110, 160);
g.drawLine(100, 180, 110, 180);
g.drawLine(110, 92, 125, 92);
g.drawLine(110, 120, 110, 140);
g.drawLine(110, 120, 114, 120);
g.drawLine(110, 130, 114, 130);
g.drawLine(110, 130, 120, 140);
g.drawLine(110, 160, 100, 180);
g.drawLine(120, 45, 120, 55);
g.drawLine(120, 80, 110, 92);
g.drawLine(120, 88, 120, 100);
g.drawLine(120, 180, 125, 160);
g.drawLine(123, 172, 128, 172);
g.drawLine(130, 80, 132, 80);
g.drawLine(130, 100, 132, 100);
g.drawLine(130, 180, 125, 160);
g.drawLine(140, 40, 140, 50);
g.drawLine(140, 40, 150, 40);
g.drawLine(140, 50, 145, 50);
g.drawLine(140, 60, 145, 60);
g.drawLine(140, 160, 140, 180);
g.drawLine(140, 160, 150, 180);
g.drawLine(150, 160, 150, 180);
g.drawLine(160, 60, 170, 60);
g.drawLine(160, 80, 170, 80);
g.drawLine(160, 80, 160, 90);
g.drawLine(160, 90, 165, 90);
g.drawLine(160, 100, 165, 100);
g.drawLine(170, 45, 160, 60);
g.drawLine(170, 170, 165, 170);
g.drawLine(170, 170, 170, 180);
g.drawLine(180, 160, 180, 180);
g.drawLine(180, 160, 190, 160);
g.drawLine(180, 170, 185, 170);
g.drawLine(180, 180, 190, 180);
g.drawLine(182, 50, 190, 40);
g.drawLine(182, 90, 190, 80);
g.drawLine(190, 40, 190, 60);
g.drawLine(190, 80, 190, 100);
g.drawLine(200, 160, 200, 180);
g.drawLine(200, 160, 210, 180);
g.drawLine(210, 85, 210, 95);
g.drawLine(210, 160, 210, 180);
}
}


----------



## geqoo (6. Nov 2013)

Ich habe das hier mal soweit gebaut, allerdings scheinen da noch so manche Linien und Kreise zu viel zu sein.
Viel Spaß bei der Fehlersuche!


```
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Paint {
   
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI(); 
            }
        });
    }

    private static void createAndShowGUI() {
        JFrame f = new JFrame("Swing Paint Demo");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(new MyPanel());
        f.pack();
        f.setVisible(true);
    }
}

class MyPanel extends JPanel {

    public MyPanel() {
        setBorder(BorderFactory.createLineBorder(Color.black));
    }

    public Dimension getPreferredSize() {
        return new Dimension(250,200);
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);       

        // Draw Text
        // Hier deine Zeichenmethoden
    }  
}
```


----------



## cholbae (6. Nov 2013)

Noch eine Korrektur. g.drawRoundRect ist falsch (gibt Rechtecke, ich brauche aber Kreise). Mit g.drawArc funktioniert es.


----------

