OOP Parameter mit der Draw-Methode übergeben

Luca W.

Mitglied
Guten Tag allerseits!
Ich bin ein absoluter Java Neuling und habe deshalb noch nicht ganz die Prinzipien der objektorientierten Orientierung verinnerlicht. Aktuell stehe ich vor dem folgenden Problem:
Um Konstruktoren zu verstehen und anzuwenden, arbeite ich an einem Projekt, in dem Rechtecke beim Drücken eines JButtons erstellt werden sollen. Diese Rechtecke sollen in einer ArrayList gespeichert werden und im Anschluss einzeln angesprochen werden können.
Soweit, so gut.
Das Problem entsteht dadurch, dass ich Rechtecke mit der Draw-Methode erzeuge und nicht weiß, wie ich dort Parameter übergeben kann.
Ich möchte die x-Position und y-Position nämlich in einem MessageDialog abfragen und anschließend die Rechtecke dort positionieren.
Zudem benötigen die Rechtecke ja auch eine Art ID in der ArrayList...
Vielen Dank für eure Hilfe!

Hier mein bisheriger Code:
Das Fenster, auf dem die Rechtecke erscheinen sollen.
Code:
package Gui;

import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Window {
    JFrame jf;
    int i = 0;

    public Window() {
        jf = new JFrame();
        jf.setSize(700, 722);
        jf.setResizable(false);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setLayout(null);
        jf.setLocationRelativeTo(null);

        JButton btn = new JButton();
        btn.setBounds(0, 0, 300, 300);
        btn.addActionListener(new ActionHandler());
        jf.add(btn);
       
        List<Rectangle> rects = new ArrayList<Rectangle>();

        if (ActionHandler.isPressed == true) {
            String eingabe1 = JOptionPane.showInputDialog("x Koordinate");  
            Rectangle.xPos(i) = Integer.parseInt (eingabe1);                                                              
            String eingabe2 = JOptionPane.showInputDialog("y Koordinate");  
            Rectangle.yPos(i) = Integer.parseInt (eingabe2);      
           
                                                         // Das Rechteck soll mit einer ID "i" angesteuert werden
            rects.add(new Rectangle(i,xPos(i),yPos(i))); // Hier wollte ich die ID, also den Index in der ArrayList festlegen
                                                         // und außerdem die x und y Koordinate übergeben
            i++;  
        }

       

        jf.setVisible(true);
    }
}

Die Draw-Methode für die Rechtecke.
Code:
package Gui;



import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.RenderingHints;



import javax.swing.JLabel;



public class Rectangle extends JLabel {



    private static final long serialVersionUID = 1L;



    public static int xPos = 0, yPos = 0;



    protected void paintComponent(Graphics g) {

        super.paintComponent(g);

        Graphics2D g2d = (Graphics2D) g;

        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);



        g.setColor(Color.BLUE);

        g.fillRect(xPos, yPos, 50, 50);

    }

}

Der Action Listener.
Code:
package Gui;



import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;



public class ActionHandler implements ActionListener {

public static boolean isPressed = false;

    @Override

    public void actionPerformed(ActionEvent e) {

        isPressed = true;

    }


}
 

mrBrown

Super-Moderator
Mitarbeiter
Erstmal solltest du jedes static bei Variablen entfernen :)

Die Position der Rechtecke kannst du denen doch über den Konstruktor übergeben?
 

Luca W.

Mitglied
"absoluter Neuling" und "GUI" sind Dinge, die naturgemäß nicht zusammenpassen. Mach erstmal ohne UI, einfach auf der Konsole.
Das stimmt zwar irgendwie, aber ich arbeite immer mit Zwischenzielen, die ich erreichen möchte. Und mein nächstes Zwischenziel ist ein Raumplaner, bei dem man Objekte auf Knopfdruck erzeugen können soll und dann mit Tasten bewegen.
Klar, könnte man Java Bücher Schritt für Schritt durcharbeiten, aber ich denke, dass sich in der Realität auch nach spezifischen Fachgebieten der Programmiersprache informiert wird, in Abhängigkeit davon, was für ein Projekt umgesetzt wird.
 

mihe7

Top Contributor
Das stimmt zwar irgendwie, aber ich arbeite immer mit Zwischenzielen, die ich erreichen möchte.
Das ist grundsätzlich auch der richtige Weg, allerdings müssen die Ziele "realistisch" (also passend zum eigenen Kenntnis-/Erfahrungsstand) sein.

Es geht nicht darum, erstmal jahrelang irgendwelche Bücher durchzuackern. Du musst ein paar grundlegende Konzepte verstehen. Hierbei sind GUIs schlicht hinderlich, während learning by doing enorm wichtig ist.
 

mihe7

Top Contributor
Da Du ja einen Raumplaner bauen willst, hätte ich mal ein paar Teilaufgaben für Dich:

1. Schreib ein Programm, das die Beschreibung eines Raums in geeignete Objekte einliest und als "Karte" wieder ausgibt. Das Programm soll als erstes Argument den Namen der Datei erhalten, die die Eingabedaten (=Beschreibung des Raums) enthält. Die Karte soll auf der Standardausgabe ausgegeben werden.

Die Eingabe hat folgenden Aufbau
Code:
breite hoehe 
n
x1 y1 b1 h1 typ1
x2 y2 b2 h2 typ2
x3 y3 b3 h3 typ3
...
xn yn bn hn typn

Es wird dabei von einem rechteckigen Raum aus, dessen Grundriss breite Einheiten breit (x-Richtung) und hoehe Einheiten hoch (y-Richtung) ist. Die linke obere Ecke des Grundrisses des Raums sei (0,0). In dem Raum befinden sich n Gestaltungselemente. Jedes Element ist rechteckig. Das i-te Element ist vom Typ typi, bi Einheiten breit, hi Einheiten hoch und befindet sich an der Position xi, yi. Als Typ kommen erstmal nur in Frage: s für Stuhl, t für Tisch.

Die Ausgabe soll den Grundriss des Raums inkl. seiner "Belegung" zeigen. Freie Positionen sollen dabei mit einem '.' angezeigt werden, andere mit dem Typ des Elements, das diese Position belegt.

Beispiel: Eingabe
Code:
10 5
5
3 1 1 1 s
5 1 1 1 s
3 3 1 1 s
5 3 1 1 s
2 2 5 1 t
Ausgabe:
Code:
..........
...s.s....
..ttttt...
...s.s....
..........

2. Erweitere das Programm derart, dass es insgesamt fünf Parameter entgegennimmt. Der erste ist wie oben die Eingabedatei, der zweite ist der Name einer Ausgabedatei, der dritte ist der Index eines zu verschiebenden Elements, der vierte gibt die Verschiebung des Elements in x-Richtung, der fünfte in y-Richtung an. Gib die Karte nach der Verschiebung des Elements auf der Standardausgabe aus und die Beschreibung im Format wie oben in der angegebenen Ausgabedatei. Das erste Element der Eingabe hat den Index 0, das letzte den Index n-1.

Rufst Du das Programm also mit der Eingabe von oben und den Parametern input.txt output.txt 4 -1 0 auf, soll es den Grundriss
Code:
..........
...s.s....
.ttttt....
...s.s....
..........
auf der Standardausgabe anzeigen und in der Datei output.txt soll sich
Code:
10 5
5
3 1 1 1 s
5 1 1 1 s
3 3 1 1 s
5 3 1 1 s
1 2 5 1 t
finden.

3. Sorge dafür, dass Dein Modell keine "unsinnigen" Verschiebungen ausführt. Beispielsweise: Stuhl aus dem Raum heraus schieben, Stuhl in den Tisch schieben (oder andersrum).

4. Erweitere Dein Modell um zusätzliche Typen (z. B. Schrank, Lampen, ...) und Attribute (z. B. Bezeichner für die Elemente) - kommt darauf an, wie weit Du gehen willst.

Wichtig: bei dem ganzen Spaß steht nicht die Ein-/Ausgabe im Vordergrund sondern die Entwicklung eines vernünftigen, objektorientierten Modells. Wenn Du das hast, könntest Du ausreichend Verständnis entwickelt haben, um in Richtung GUI zu gehen. Das bis dahin entwickelte Modell wird dort übrigens weiterverwendet. Sprich: das brauchst Du sowieso.
 

Luca W.

Mitglied
Das ist grundsätzlich auch der richtige Weg, allerdings müssen die Ziele "realistisch" (also passend zum eigenen Kenntnis-/Erfahrungsstand) sein.

Es geht nicht darum, erstmal jahrelang irgendwelche Bücher durchzuackern. Du musst ein paar grundlegende Konzepte verstehen. Hierbei sind GUIs schlicht hinderlich, während learning by doing enorm wichtig ist.

Danke für deine Hilfe.
Ich hatte Informatik 2 Jahre lang in der Schule, deshalb war die Beschreibung vielleicht ein wenig irreführend.
Kannst du mir vielleicht ein oder zwei Bücher empfehlen, die so praxisnah wie deine Aufgabe eben, beschrieben sind?
Danke nochmal für die Hilfe :)
 

Javinner

Top Contributor
ein oder zwei Bücher empfehlen
Für ein absoluten Anfänger in Java empfehle ich:
Es gibt noch einige Bücher mehr, zum Beispiel "Der Weg zum Java-Profi", welches ich persönlich nicht gelesen habe, aber über die Zeit wurde es hier oft von Leuten, die es hatten, als sehr gut angepriesen. Dann "Java ist auch eine Insel", was online frei zu lesen ist und für ein Anfänger, laut dem Autor selbst, nicht geeignet ist.

Bevor du dich an die GUI machst, lerne erstmal die imperativen Sprachkonzepte, die Codeconvention von Java
, nutze den Forum für Fragen, FAQ .

Jetzt hast du bis Weihnachten zu tun, melde dich, wenn was ist.

Wenn du eine Alternative suchst, lese hier kurz durch.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Interface Parameter und Rückgabewerte in Lambda Ausdrücken verwenden Java Basics - Anfänger-Themen 16
C Parameter in verschiedenen Anzahl und Typen Java Basics - Anfänger-Themen 6
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
MiMa Java Doc mehrere Return Parameter Java Basics - Anfänger-Themen 11
BeginnerJava "Weihnachtsbäume" anzeigen: Höhe als Parameter Java Basics - Anfänger-Themen 1
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
I Optionaler Parameter bei Methode, der nur optional ist? Java Basics - Anfänger-Themen 6
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
M Interface als Parameter einer Klasse Java Basics - Anfänger-Themen 8
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
P Eclipse Karate Framework API Test . Unexpected Error: the trustAnchors parameter must be non-empty Java Basics - Anfänger-Themen 1
X Default Parameter Java Basics - Anfänger-Themen 20
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
KogoroMori21 Variable im Parameter und Ohne Java Basics - Anfänger-Themen 5
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
I JAX-RS Mehrere Parameter in Query Java Basics - Anfänger-Themen 3
H Warum kann man keine Parameter in die main-Methode packen? Java Basics - Anfänger-Themen 4
B Konstruktor mit Array als Parameter Java Basics - Anfänger-Themen 3
D Best Practice Parameter int vs byte Java Basics - Anfänger-Themen 16
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
L Wie greife ich in der Subklasse auf die Parameter einer Methode der Superklasse zu ? Java Basics - Anfänger-Themen 15
C Methoden-Parameter ist Interface Java Basics - Anfänger-Themen 5
J Apache Poi - createCell() Methode akzeptiert keinen Index aus for-schleife als Parameter Java Basics - Anfänger-Themen 4
P Parameter auf Datenformat überprüfen Java Basics - Anfänger-Themen 5
S Hamster Simulator rechnen lernen Parameter int Java Basics - Anfänger-Themen 6
Curtis_MC Parameter-Übergabe bei Klassen und Methoden Java Basics - Anfänger-Themen 12
C Java Methoden "Parameter" Problem Java Basics - Anfänger-Themen 16
W Parameter solange addieren bis 13 auftaucht Java Basics - Anfänger-Themen 11
B Frage zu: String... strings -> Ungleiche Anzahl an Parameter? Java Basics - Anfänger-Themen 4
L Methoden Übergabe von Parameter Java Basics - Anfänger-Themen 3
R Zu viele leere Parameter Java Basics - Anfänger-Themen 8
H Frage zu Parameter einer Methode Java Basics - Anfänger-Themen 2
H Frage zu Parameter einer Methode Java Basics - Anfänger-Themen 3
B Klassen Array Parameter im Konstruktor? Java Basics - Anfänger-Themen 4
V Unbekannte Parameter Java Basics - Anfänger-Themen 1
J Input/Output Input als Parameter an Methoden übergeben Java Basics - Anfänger-Themen 23
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
A festgelegte Parameter Java Basics - Anfänger-Themen 11
PaperHat Methoden als Parameter anderer Methode verwenden Java Basics - Anfänger-Themen 11
D Interface Final für Parameter in überschriebenen Methoden? Java Basics - Anfänger-Themen 3
P Variablen Optionaler Parameter auf der Kommandozeile Java Basics - Anfänger-Themen 12
S Variable Parameter Java Basics - Anfänger-Themen 5
L Variablen Parameter bekommen Java Basics - Anfänger-Themen 13
M Methode mit Array als Parameter an Main übergeben Java Basics - Anfänger-Themen 1
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 7
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 0
B Webservice -> alle parameter bekommen von form Java Basics - Anfänger-Themen 2
K Klassenmethode mit übergebenen Parameter speichern Java Basics - Anfänger-Themen 7
I BigDecimal als Parameter verwenden Java Basics - Anfänger-Themen 3
J Parameter in main verwenden Java Basics - Anfänger-Themen 3
J Programm was üer Runtime.getRuntime gestartet wird erkennt String Parameter nicht Java Basics - Anfänger-Themen 0
G Int-Array im Konstruktor Parameter Java Basics - Anfänger-Themen 37
T Parameter das übergeben wurde ändern? Java Basics - Anfänger-Themen 1
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
P Operatoren Parameter nicht auf null geprüft? Java Basics - Anfänger-Themen 16
D Name eines JMenue als Parameter übergeben Java Basics - Anfänger-Themen 20
K Dynamischen Supplier für Parameter Java Basics - Anfänger-Themen 12
C Methoden Welche JSoup Methoden Und Parameter für diese HTML Tags Java Basics - Anfänger-Themen 4
A Die Werte zur Berechnung müssen als Parameter übergeben werden? Java Basics - Anfänger-Themen 7
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
W Methoden Methode ohne Parameter auf Instanz eines Objekts aufrufen? Java Basics - Anfänger-Themen 14
M Methode mit Parameter Java Basics - Anfänger-Themen 4
G Objektübergabe durch Parameter Java Basics - Anfänger-Themen 3
J Erste Schritte catch Exeption Parameter Java Basics - Anfänger-Themen 7
A Erste Schritte Methoden mit Parameter Java Basics - Anfänger-Themen 2
D Statische Objekte mit variablem Parameter Java Basics - Anfänger-Themen 1
N Klassen Klassen zwingende Parameter mitteilen Java Basics - Anfänger-Themen 4
L Methoden Methode Parameter vertauschen? Java Basics - Anfänger-Themen 3
C Auswertung Ausdruck mit Punknotation + Objekt als Parameter Java Basics - Anfänger-Themen 3
A Methoden Parameter optionalisieren möglich? - Wie? Java Basics - Anfänger-Themen 19
N Beliebig viele parameter Java Basics - Anfänger-Themen 3
F Methoden: Referenzvariable als Parameter Java Basics - Anfänger-Themen 4
J HttpGet Parameter mitgeben Java Basics - Anfänger-Themen 5
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
T Klasse von erfahren wenn Obertyp Parameter ist Java Basics - Anfänger-Themen 6
J Klassen Fehler mit Parameter des Konstruktors bei einer Objekterzeugung Java Basics - Anfänger-Themen 5
V Parameter in synchronized-Blöcken verstehen Java Basics - Anfänger-Themen 2
M Klasse als Parameter übergeben Java Basics - Anfänger-Themen 7
S Methoden eine Instanz einer eigenen Klasse als parameter übergeben Java Basics - Anfänger-Themen 9
T unterschiedlich viele parameter übergeben Java Basics - Anfänger-Themen 5
V Methoden key value Parameter Java Basics - Anfänger-Themen 11
J Drucker parameter ändern Java Basics - Anfänger-Themen 9
F trustAnchors parameter must be non-empty Java Basics - Anfänger-Themen 0
O Basisklassen als Methoden-Parameter ähnlich, wie in C++ ? Java Basics - Anfänger-Themen 6
D GregorianCalendar als Parameter Java Basics - Anfänger-Themen 2
M Parameter von Konstruktor, der Superklassen-Konstruktor aufruft Java Basics - Anfänger-Themen 2
E Problem beim Übergeben von Parameter an Methode Java Basics - Anfänger-Themen 2
O ArrayListe sortieren anhand zweier Parameter Java Basics - Anfänger-Themen 4
S Methoden Rückgabewert einer Methode als Parameter an eine andere Methode übergeben, geht das? Java Basics - Anfänger-Themen 5
D Enum als Parameter Java Basics - Anfänger-Themen 6
T In main-Methode Parameter übergeben Java Basics - Anfänger-Themen 3
M Methode als Parameter übergeben Java Basics - Anfänger-Themen 16
Joew0815 Methoden Objekt als Methoden-Parameter - Kein call-by-reference? Java Basics - Anfänger-Themen 12
T Parameter in Eigner Konsole Java Basics - Anfänger-Themen 2
ElfterDoktor Einen Objekt Attribute/Parameter geben & Auslesen Java Basics - Anfänger-Themen 4
R Erste Schritte Unterschied Array-Parameter zu Array als Parameter? Java Basics - Anfänger-Themen 7
HoloYoitsu args-Parameter durchschleifen (Schnittstelle erweitern?) Java Basics - Anfänger-Themen 27

Ähnliche Java Themen

Neue Themen


Oben