2D-Grafik Mehrere Linien (nacheinander) übereinander Zeichnen

M

McThyzer

Gast
Hallo,

ich sitze derweil an meiner Facharbeit.
Mein Thema ist in Java ein Programm zu schreiben, welches erlaubt durch simples zusammenklicken einen Schaltplan zu erstellen und diesen dann zu Simulieren.

Mein Problem ist, dass ich in Java noch keinerlei Grafik-Erfahrung habe. Ich habe es bis jetzt geschafft ein JFrame zu erstellen mit den jeweiligen Buttons für die Komponenten.

Jetzt geht es aber darum diese Komponenten (bei bedarf) zu Zeichnen.

Dafür habe ich ein JPanel erstellt und ich möchte nun auf diesem JPanel je nachdem wie der Benutzer das zusammenklickt diese Komponenten und Verbindungskabel zeichnen.

Ich weiß wie ich mit "drawLine(...)" vor Programmstart definieren kann wie ne Linie aussieht, bzw. diese variabel mache und durch Inputs verschieben kann.
Jedoch konnte ich nirgendswo einen Weg finden mit den standard Libarys (AWT od. SWING) das 'Graphics'-Objekt vom JPanel "weiterzugeben" und demnach funktionen wie:

<jpanel>.g.drawLine(...)
<jpanel>.g.drawRect(...)
<jpanel>.g.drawLine(...)
<jpanel>.g.drawLine(...)

Dieses JPanel-Graphics objekt während das Programm läuft zu ändern und Komponenten hinzuzufügen.

Vielleicht ist das Prinzip dahinter schon abwegig, aber wie gesagt habe ich keinerlei Erfahrung mit diesen Panels und Frames.
In anderen Programmiersprachen (Pascal, Basic, etc.) konnte man mit simplen befehlen immer auf ein und die selbe hintergrundfläche zeichnen.
Bei Java ist das anscheinend nicht so leicht möglich.


=> Kurz:
Ich möchte, dass ich mit den "drawLine(...)" befehlen außerhalb der "paintComponent(...)"-Methode dieses Graphics-Objekt verändern und somit theoretisch wie in Pascal damit Arbeiten kann.
 

Michael...

Top Contributor
=> Kurz:
Ich möchte, dass ich mit den "drawLine(...)" befehlen außerhalb der "paintComponent(...)"-Methode dieses Graphics-Objekt verändern und somit theoretisch wie in Pascal damit Arbeiten kann.
kurz: geht nicht. es wird bei komponenten wird ausschließlich in der paint... gezeichnet. natürlich kann man aus der methode heraus weitere methoden aufrufen, aber man muss sich immer “merken“ was wie darstellt werden soll und diese info innerhalb der paint... zur verfügung stellen
 
Zuletzt bearbeitet:
M

McThyzer

Gast
Und wie lösen wir das problemchen?

Muss ich ne andere Grafik-Engine/API importieren (oder etwas in der Art) um zu einem Ähnlichen Ziel zu gelangen?
 

Marco13

Top Contributor
Mehr Infos könnten helfen. Bisher klingt es, als könntest du im Panel einfach eine List<Shape> bzw. List<Line2D> anlegen wo die Linien drinliegen, und in paintComponent werden die dann alle mit graphics2D.draw(theShape) gezeichnet.
 
V

vanny

Gast
Wahlweise kannste dir auch erst alles in ein BufferedImage zeichnen und in der paint();
nur noch das zeichnen lassen.
 
M

McThyzer

Gast
Mehr Infos könnten helfen. Bisher klingt es, als könntest du im Panel einfach eine List<Shape> bzw. List<Line2D> anlegen wo die Linien drinliegen, und in paintComponent werden die dann alle mit graphics2D.draw(theShape) gezeichnet.

Ich glaube das wäre sogar möglich. - Den Wald vor lauter Bäume nicht mehr gesehen.

Danke. :D

Ich war so fixiert von der idee von außen auf diese Graphics zuzugreifen anstatt zu überlegen wie ich diese 'Shapes' von Innen "reinzuziehen".
Wenn ihr versteht. :)

Falls das nicht geklappt haben sollte melde ich mich noch einmal.

- Das mit den Buffered Image könnte ich evtl. auch gebrauchen und kombinieren mit der List.
 

GUI-Programmer

Top Contributor
Das Selbe funktioniert übrigens auch hervorragend mit einem eigenen Interface, das eine Methode mit Graphics - Paramter enthält. Danach könnte man natürlich noch Klassen schreiben die dieses dann implementieren und somit in einer Liste mit den Interface verwenden. Oder aber man erzeugt im Programm eine anonyme Klasse des Interfaces und überschreibt dort die Zeichenmethode. Danach fügt man diese der entsprechenden Liste hinzu.

Beispielsweise:

Zeichen - Interface
Java:
import java.awt.Graphics2D;

public interface Paintable {
    public void paintObject(Graphics2D g);
}

Zeichenklasse
Java:
import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.ArrayList;

public class DrawIt extends JPanel {

    private ArrayList<Paintable> paintables = new ArrayList<Paintable>();

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g.create();
        for(Paintable paintable : paintables) {
            paintable.paintObject(g2);
        }
    }

    // irgendwo anders im Programm:
    protected void testmethode() {
        Paintable paintable = new Paintable() {
            public void paintObject(Graphics2D g) {
                g.drawString("Hallo", 10, 10);
            }
        };
        paintables.add(paintable);
        repaint();
        //weiterer Ablauf
    }
}

Wäre auch ne Möglichkeit, falls du noch ganz Spezielles zeichnen solltest!
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Mehrere Linien zeichnen AWT, Swing, JavaFX & SWT 8
T Swing Mehrere Ausgaben in JTextArea AWT, Swing, JavaFX & SWT 2
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
S Mehrere Tabellen Zellen gleichzeitig färben AWT, Swing, JavaFX & SWT 5
Apfelbaum2005 Swing JFrame mehrere JPanels mit unterschiedlichen Formen hinzufügen AWT, Swing, JavaFX & SWT 1
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
I Scene Builder - mehrere Seiten AWT, Swing, JavaFX & SWT 6
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
schoel27 Mehrere JButtons sollen das gleiche Event auslösen AWT, Swing, JavaFX & SWT 2
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
M mehrere jTextField untereinander AWT, Swing, JavaFX & SWT 1
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
M JavaFX JavaFX in mehrere Controller AWT, Swing, JavaFX & SWT 21
R mehrere buttons mit forschleife kreieren und individuell bearbeiten AWT, Swing, JavaFX & SWT 1
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
N Textdatei GUI, Text in Textarea anzeigen mehrere Zeilen AWT, Swing, JavaFX & SWT 1
temi JavaFX Mehrere Views mit Stage.setScene() oder mit Scene.setRoot()? AWT, Swing, JavaFX & SWT 7
P Swing Mehrere JPanels auf ein JFrame hinzufügen? AWT, Swing, JavaFX & SWT 2
T Swing Tetraeder - mehrere Punkte verbinden? - Ansätze gesucht AWT, Swing, JavaFX & SWT 2
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 29
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 0
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
J JavaFX - mehrere Views, Model durchreichen AWT, Swing, JavaFX & SWT 10
it_is_all Swing Mehrere JComboBoxen - wie die versch. Boxen mit ItemStateChange auslesen? AWT, Swing, JavaFX & SWT 3
M Swing Mehrere Textfelder mit ScrollBars - Größe der Felder AWT, Swing, JavaFX & SWT 0
W JavaFX Mehrere Klassen in ein TableView AWT, Swing, JavaFX & SWT 6
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
L JavaFX Mehrere JavaFX Szenen mit einem Menü AWT, Swing, JavaFX & SWT 1
D Java FXML mehrere Fenster AWT, Swing, JavaFX & SWT 4
F JavaFX Mehrere Stages "managen" AWT, Swing, JavaFX & SWT 2
r4w Changelistener auf mehrere Textfelder AWT, Swing, JavaFX & SWT 5
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
S Swing Mehrere Modal-Dialoge übereinander AWT, Swing, JavaFX & SWT 5
T 2D-Grafik JFreeChart mehrere Y-Achsen AWT, Swing, JavaFX & SWT 2
C JavaFX mehrere Kreise nach Eingabeprozess ausgeben AWT, Swing, JavaFX & SWT 2
Thallius Swing Mehrere tausend "Panels" erstellen AWT, Swing, JavaFX & SWT 3
C Java FX Warnmeldung: Mehrere Fonts gehören derselben Familie und Stil AWT, Swing, JavaFX & SWT 2
J Mehrere JInternalFrame; GetValues AWT, Swing, JavaFX & SWT 1
JG12111989 mehrere Polyline-Objekte zeichnen AWT, Swing, JavaFX & SWT 3
LexeB4F JTable mehrere Zelle selektieren und inhalte Löschen.. Ideen gesucht AWT, Swing, JavaFX & SWT 1
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
K JavaFX Mehrere Cell Editors in einem TreeView Item AWT, Swing, JavaFX & SWT 2
KaffeeFan mehrere JTextField durchlaufen AWT, Swing, JavaFX & SWT 4
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
T Dynamisch mehrere Checkboxen anlegen AWT, Swing, JavaFX & SWT 2
G JavaFX Menü und mehrere Scenes AWT, Swing, JavaFX & SWT 16
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
D Mehrere RadiButtons auswählar AWT, Swing, JavaFX & SWT 3
P Swing JTable mehrere Zeilen markieren AWT, Swing, JavaFX & SWT 1
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
T JavaFX FXMLController für mehrere FXML? AWT, Swing, JavaFX & SWT 7
G mehrere Action-Abfolgen erfassen AWT, Swing, JavaFX & SWT 6
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
X Swing JPanel mehrere Ebenen zeichnen AWT, Swing, JavaFX & SWT 13
J Mehrere Hyperlinks "stilvoll" darstellen. AWT, Swing, JavaFX & SWT 1
G Mehrere Strings um Kreis zeichnen und positionieren AWT, Swing, JavaFX & SWT 0
S JavaFX Mehrere TreeTableView's synchron scrollen AWT, Swing, JavaFX & SWT 0
U Mehrere Oberflächeninstanzen seperat schließen AWT, Swing, JavaFX & SWT 5
J Rahmen um mehrere GUI Einzelteile AWT, Swing, JavaFX & SWT 2
S Layouts, mehrere Buttons nebeneinander AWT, Swing, JavaFX & SWT 2
M Mehrere Fenster innerhalb einer Application AWT, Swing, JavaFX & SWT 3
T Über mehrere Panel zeichnen AWT, Swing, JavaFX & SWT 2
M ActionListener für mehrere Klassen AWT, Swing, JavaFX & SWT 4
T [LWJGL] mehrere Displays? AWT, Swing, JavaFX & SWT 19
SexyPenny90 Mehrere Fenster AWT, Swing, JavaFX & SWT 2
M Handling 1 Fenster mehrere Panels AWT, Swing, JavaFX & SWT 2
Y Mehrere JSlider verlinken AWT, Swing, JavaFX & SWT 6
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
O Swing JLabel mehrere Zeilen AWT, Swing, JavaFX & SWT 2
P mehrere Rectangles per JButton AWT, Swing, JavaFX & SWT 9
B JToolBar dynamisch auf mehrere Zeilen erweitern AWT, Swing, JavaFX & SWT 2
Jats Zeichen auf mehrere JPanels AWT, Swing, JavaFX & SWT 7
G Mehrere Probleme mit Java's GUI AWT, Swing, JavaFX & SWT 6
G Mehrere Layoutprobleme AWT, Swing, JavaFX & SWT 2
Kenan89 JTable mehrere ListSelections AWT, Swing, JavaFX & SWT 2
M TextArea über mehrere Zeilen - wie Zeileanzahl abfragen? AWT, Swing, JavaFX & SWT 5
J Swing JDialog blokiert mehrere JFrames - soll aber nur den aufrufenden blockieren AWT, Swing, JavaFX & SWT 4
A mehrere Zeilen in GUi ausgeben AWT, Swing, JavaFX & SWT 2
N Mehrere Tasks nacheinander ausführen AWT, Swing, JavaFX & SWT 7
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
propra Mehrere Objekte gleichzeitig verschieben AWT, Swing, JavaFX & SWT 7
M Mehrere JPanel nacheinander?! AWT, Swing, JavaFX & SWT 11
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
K SWT Mehrere Einträge ins Clipboard legen AWT, Swing, JavaFX & SWT 2
C Swing Ein JFrame mehrere Ansichten AWT, Swing, JavaFX & SWT 8
C Swing Mehrere JSlider sollen aufeinander reagieren AWT, Swing, JavaFX & SWT 4
GUI-Programmer JFilechooser, mehrere Datein selektieren und Reihenfolge (2) AWT, Swing, JavaFX & SWT 8
S Mehrere JLists - Wie kennzeichnen? AWT, Swing, JavaFX & SWT 2
S Swing MVC Ein JFrame, mehrere JPanels AWT, Swing, JavaFX & SWT 6
J Mehrere JRadioButtons, aber nur 1 darf ausgewählt sein AWT, Swing, JavaFX & SWT 4
L Swing Mehrere Button die selbe Größe AWT, Swing, JavaFX & SWT 4
B AWT mehrere Fenster schließen AWT, Swing, JavaFX & SWT 8
I Wie mehrere JComboBoxen in Abhängigkeit einer anderen Box ändern? AWT, Swing, JavaFX & SWT 8
G mehrere JPanel in ein (vertikales) JScrollPane AWT, Swing, JavaFX & SWT 8
F Swing Mehrere Textfelder in Scrollpane einfügen und dann zum Scrollen bringen? AWT, Swing, JavaFX & SWT 4
GianaSisters Swing jTable - Feldtext soll mehrere Zeilen haben AWT, Swing, JavaFX & SWT 3
K JFileChooser mehrere Dateien markieren ohne STRG AWT, Swing, JavaFX & SWT 4
D Mehrere JTabel in einem Frame positionieren AWT, Swing, JavaFX & SWT 5
N mehrere JComboBoxes AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben