Weitere Parameter in die paintComponent()-Methode übergeben?

Status
Nicht offen für weitere Antworten.

Wesloth

Mitglied
Hab zurzeit nur folgendes Grundgerüst:
Code:
package haupt;

import java.awt.*;
import javax.swing.*;

public class Grafik extends JPanel
{ 
	@Override 
	protected void paintComponent( Graphics g ) 
	{ 
		g.drawLine(0,0,100,100);
	};

	public static void main( String[] args ) 
	{ 
		JFrame f = new JFrame(); 
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
		new Grafik();
		f.setSize(200, 200); 
		f.setVisible(true); 
	};
};
Jetzt würde ich der paintComponent-Methode gerne ein Array als Parameter übergeben, jedoch erhalte ich immer die Fehlermeldung:
The method paintComponent( Graphics, int[]) of type Grafik must override or implement a supertype method

Kann man damit also nur hartgecoded arbeiten :shock:
Oder gibts da Tricks mit denen ich da doch ein bisschen Variabilität rein bringen kann.

btw. Es gibt im Kopf der Klasse Grafik noch folgenden Hinweis:
The serializable class Grafik does not declare a static final serialVersionUID field of type long
Was?
 

Tobias

Top Contributor
Ein Methode, die die Annotation @Override trägt, muß auch eine Eltern-Methode überschreiben. In JComponent gibt es aber keine Methode paintComponent(Graphics, int[]).

Die serialVersion UID kannst du dir von Eclipse generieren lassen oder eben selbst hinschreiben: public static final long serialVersionUID = 123; // Der Wert ist annähernd völlig egal. Man kann diese Warnung aber auch in den Projekteigenschaften abschalten.
 

Tobias

Top Contributor
Warum sollte der Swing-Painting-Mechanismus eine ihm völlig unbekannte Methode aufrufen, von der er überhaupt nicht weiß, welche Parameter er wie übergeben soll? Das hat mit dem @Override gar nichts zu tun. Swing ruft die paintComponent(Graphics)-Methode auf uns sonst gar nichts. Ist ihm herzlich egal wie viele gleichnamige andere Methoden du sonst noch hast, entscheidend ist die Signatur.
 

André Uhres

Top Contributor
Wir können uns eine neue Methode machen, die dem Objekt das Array übergeben kann.
Beispiel:
Code:
package haupt;
/*
* Grafik.java
*/
import java.awt.*;
import javax.swing.*;
public class Grafik extends JPanel {
    private int[] values;
    @Override
    protected void paintComponent(final Graphics g) {
        super.paintComponent(g);
        for (int y : values) {
            g.drawLine(0, y, 100, 100);
        }
    }
    public void setValues(final int... values) {
        this.values = values;
    }
    public static void main(final String[] args) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame("Grafik Demo");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                Grafik grafik = new Grafik();
                grafik.setValues(10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
                f.add(grafik);
                f.setSize(200, 200);
                f.setLocationRelativeTo(null);
                f.setVisible(true);
            }
        };
        SwingUtilities.invokeLater(runnable);
    }
}
 

Wesloth

Mitglied
Vielen Dank :D
Solche Tricks hab ich gemeint.
Nur habe ich mal dieses runnable raus genommen:
Code:
    public static void main(final String[] args) {
        //Runnable runnable = new Runnable() {
          //  @Override
          //  public void run() {
                JFrame f = new JFrame("Grafik Demo");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                Grafik grafik = new Grafik();
                grafik.setValues(10, 20, 30, 40, 50, 60, 70, 80, 90, 100,200);
                f.add(grafik);
                f.setSize(200, 200);
                f.setLocationRelativeTo(null);
                f.setVisible(true);
            //};
        //};
        //SwingUtilities.invokeLater(runnable);
    };
Oder ist das irgendwie wichtig, weil es funktioniert auch so genauso gut wie vorher.
 

Tobias

Top Contributor
Ja, aber nicht zwangsweise immer. Irgendwann wird dein Programm möglicherweise mal komisch kaputt gehen. EDT und Threadsicherheit von Swing sind die Schlagworte für das Studium eines beliebigen Lehrbuchs dazu.
 

André Uhres

Top Contributor
Initial Threads und Event Dispatch Thread


Initial Threads

In Swing Programmen haben die Initial Threads nicht viel zu tun. Ihre Hauptaufgabe ist
ein Runnable Objekt anzulegen, das die GUI initialisiert, und dieses Objekt zur Ausführung
auf den Event Dispatch Thread zu schicken.
Ein Initial Thread schickt den GUI Initialisierungsantrag auf den Event Dispatch Thread mit dem Aufruf von
javax.swing.SwingUtilities.invokeLater oder javax.swing.SwingUtilities.invokeAndWait.
Lies mehr dazu...


Event Dispatch Thread

Einige Swing Komponentenmethoden sind in der API Spezifikation als "thread safe" gekennzeichnet;
solche Methoden können von irgendeinem Thread sicher aufgerufen werden.
Alle anderen Swing Komponentenmethoden müssen vom Event Dispatch Thread aus aufgerufen werden.
Programme, die diese Regel ignorieren, könnten zwar meistens korrekt laufen,
sind aber unvorhersehbaren Fehlern unterworfen, die schwer nachvollziehbar sind.
Lies mehr dazu...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Weitere Längen umrechnen Java Basics - Anfänger-Themen 2
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
B Zu Property Feld weitere Informationen hinzufügen? Java Basics - Anfänger-Themen 4
D Erste Schritte Weitere Befehle implementieren Java Basics - Anfänger-Themen 27
W DNS Name auslesen + weitere Anfängerfrage Java Basics - Anfänger-Themen 4
A Weitere Konsolenfenster öffnen Java Basics - Anfänger-Themen 3
B Objekte aus einer anderen Klasse(in der sich weitere Klassen befinden) erzeugen Java Basics - Anfänger-Themen 24
FetterOtter Weitere Anwendungen öffnen Java Basics - Anfänger-Themen 5
N ArrayList in2 weitere Arraylist unterteilen Java Basics - Anfänger-Themen 5
F weitere Klasse starten Java Basics - Anfänger-Themen 7
M Liste enthält weitere Listen, hbm.xml Mappingdatei Java Basics - Anfänger-Themen 2
M an String-Array weitere Werte anhängen Java Basics - Anfänger-Themen 22
K Keine weitere (java.util.)Scanner Eingabemöglichkeit? Java Basics - Anfänger-Themen 5
U Liste importieren und für weitere Verwendung sichern Java Basics - Anfänger-Themen 4
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
L OOP Parameter mit der Draw-Methode übergeben 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

Ähnliche Java Themen

Neue Themen


Oben