JPanel in andere Klasse übergeben

Hope

Neues Mitglied
Hi,
ich habe gedacht ihr könntet mir vielleicht helfen. ^^
Ich hab seit längeren nicht mehr mit Java programmiert und hab leider einige Dinge vergessen und da ich zu diesem Thema nichts im Forum fand dachte ich, ich mache mal ein neuen Thread auf.

Zum Problem:

Ich möchte ein JPanel aus einer anderen Klasse übergeben und auf ein anderes JPanel draufmachen.
(Die ['B][/B'] <-- spiegeln die Stellen im Code die ich zum Übergeben benutzte)

So sieht der Quellcode dazu aus:

fenster.java
Java:
import java.awt.*;
import javax.swing.*;

public class fenster {
	private JFrame f;
	private JPanel p;		//Hintergrundpanel
	private int x = 600;	//Größe des Fensters
	private int y = 400;
	private String name = "QC by ...";
	
[B]	spielfeld sf = new spielfeld();[/B]
		
	public fenster(){
		f = new JFrame(name);
		p = new JPanel();
		
		f.setSize(x,y);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setResizable(false);
		f.setLocationRelativeTo(null);
		p.setSize(new Dimension(x,y));
		p.setMaximumSize(new Dimension(x,y));
		p.setMinimumSize(new Dimension(x,y));
		p.setPreferredSize(new Dimension(x,y));
		p.setBackground(Color.BLACK);
		
[B]		JPanel spielF = new JPanel();
		spielF = sf.gebeSpielfeld2();	[/B]	
		p.add(spielF);
		
		f.add(p);		
		f.setVisible(true);	
	}	
}

spielfeld.java
Java:
import java.awt.*;
import javax.swing.*;

public class spielfeld {
	private JPanel spf;
	private int x = 200;
	private int y = 200;
	
	public void SpielfeldA(){
		spf = new JPanel();
		spf.setSize(new Dimension(x,y));
		spf.setMaximumSize(new Dimension(x,y));
		spf.setMinimumSize(new Dimension(x,y));
		spf.setPreferredSize(new Dimension(x,y));
		spf.setBackground(Color.YELLOW);
	}
	
[B]	public JPanel gebeSpielfeld2(){
		return spf;
	}[/B]
}

Ich hab versucht mit dem Getter die Variable (JPanel spf) an die fenster.java zu übergeben, aber aus irgendeinen Grund funktioniert dies nicht.

Die Frage ist im Prinzip wie kriege ich das JPanel spf in die fenster.java übergeben ?

Danke schonmal für jegliche Antwort. ^^

Lg Hope
 

Volvagia

Top Contributor
Du rufst SpielfeldA nicht auf, deshalb wird in spf nichts hineingeschrieben, und du bekommst null zurück. Übrigens schreibst du in spielF ein neues JPanel, und überschreibst es direkt danach mit dem Rückgabewert von sf.

Klassennamen am Besten immer groß, Methoden immer klein.
 

BabySuna

Mitglied
Hallo Das Thema ist zwar schon älter aber ich stehe gerade vor dem gleichen Probelm. Der Link ist leider nicht mehr aktiv.

Wie kann ich JPanel Design aufrufen, welches in einer anderen Klasse geschrieben wurde? Ich habe Ich JTabbedPane, wo das aussehen der einzelnen Tabs in separaten Dateien stehen soll. Und in der Klasse Aussehen soll alles zusammen gefügt werden. Wie erstelle ich das?

Wenn ich alles in eine Datei schreibe, dann läuft es fehlerfrei

Kann mir wer helfen?
 
K

kneitzel

Gast
Das hängt immer davon ab, was Du genau derzeit hast.

Du kannst z.B. deine eigenen Komponenten schreiben. Dann hast Du evtl. etwas wie:
public class MyClass extends JPanel { ... }

Dann würdest Du da, wo Du es verwenden würdest, eine neue Instanz von MyClass erstellen.

Oder Du hast in Klasse A etwas, das Du in Klasse b brauchst. Dann kannst Du da Referenzen Weiter geben. Das wäre dann z.B. sowas:

Java:
public static void main(String[] args) {
    A a = new A();
    B b = new B();
    b.setA(a); // Hier gibst Du der Instanz in b eine Referenz auf a. Damit kann in B auf diese Instanz zugegriffen werden.
}

Letzteres ist etwas, das man etwas einschränken will. Aber das zu erläutern wird etwas schwer ...
 
K

kneitzel

Gast
Ist das kein guter Stil wenn man Objektreferenzen hin und her schiebt?
Sollte man besser mit Vererbung arbeiten?
Also es werden keine Objektreferenzen "hin und her" geschoben sondern es wird nur dafür gesorgt, dass alle, die etwas kennen müssen, dies auch kennen.

Jetzt versuche ich einmal paar Dinge in sehr wenigen Sätzen zu erläutern. Die Gefahr, Dich damit zu verwirren, ist leider recht hoch - zu jedem Aspekt gibt es ganze Abschnitte in Büchern und Abhandlungen und was weiss ich nicht alles ... Aber ich versuche es mal:

Vererbung sollte man nur da einsetzen, wenn es wirklich notwendig ist. Dabei sind gewisse Fragen wichtig: Wenn A von B abgeleitet wird:
- Ist A ein B? (Beispiel: Ist ein Hund ein Säugetier? Ja, sieht also gut aus. Ist ein Haus eine Katze? Wohl kaum. In einem Haus kann eine Katze sein. Aber ein Haus ist keine Katze!)
- Verhält sich A wie B? (Verhält sich ein Hund wie ein Säugetier? Was für Verhalten hat ein Säugetier? Gebären von Jungtieren und dann das Säugen durch die Mutter... Ja, das machen Hunde auch auch. Also ist so gegeben.)
Die entsprechenden Regeln sind noch etwas umfangreicher und auch relativ komplex. Aber es gibt auch Empfehlungen - eine Empfehlung ist z.B. "Containment over Inheritance" - Es ist oft besser, wenn man einfach eine "hat ein" Beziehung aufbaut als eine "ist eine". typisches Beispiel ist die GUI in einem Programm. Statt da von JFrame abzuleiten (Inheritance) ist es besser, der GUI Klasse ein JFrame zu geben ...

Aber wenn wir noch zurück gehen: Es gibt natürlich einiges mehr das zu erwähnen ist. So sollte man nicht gegen konkrete Implementationen entwickeln. Statt dessen lieber gegen Interfaces.
Nehmen wir ein Beispiel: Du hast eine Liste von Irgendwas. Dazu nutzt Du eine ArrayList<IregendWas>. Wenn Du jetzt in einer Methode sowas übergeben bekommen willst, dann könntest Du schreiben:
void meineMethode(ArrayList<IrgendWas> parameter) { ... }
Jetzt bist Du aber sehr eingeschränkt. Wenn jemand eben nicht mit ArrayList arbeitet, dann kann er die Methode so direkt nicht aufrufen. Daher nimmt man lieber ein Interface, dass so allgemein wie möglich und so deutlich wie nötig ist.
Bei ArrayList gibt es da mehrere Interfaces, die alle aufeinander Aufbauen: List, Collection, Iterable
Brauchst Du, dass die Elemente eine Reihenfolge haben? -> List. Ist keine Reihenfolge wichtig aber Du willst Dinge nutzen, die Collection hat aber nicht Iterable wie z.B. stream() ->Collection. Wenn Du die Elemente nur durchgehen können willst: Iterable.

Bei Rückgaben bist Du so konkret wie möglich / sinnvoll: Wenn Du eine ArrayList zurück gibst, ist List das Interface. Denn eine List ist ja auch eine Collection und ein Iterable. Also egal, was derjenige braucht: Er bekommt etwas brauchbares. Aber das setzt natürlich voraus, dass Du wirklich eine List hast, also Elemente eine Reihenfolge haben.
Hier könnte man auf die Idee kommen und fragen: Wenn so konkret wie möglich: Warum dann nicht direkt das ArrayList zurück geben?
Wir wollen keine konkrete Klasse zurück geben, denn das ist ein Implementierungs-Detail! In welcher List Implementation Du etwas speicherst ist Dein Geheimnis in der Klasse. Das geht niemanden außen etwas an. Dadurch kannst Du es jederzeit ändern. (Stichwort Kapselung)

Ich hoffe, das war so in der Kürze verständlich. Ansonsten einfach ignorieren oder im Detail nachfragen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen Optisch JPanel BorderLayout vertikaler Rand dicker als horizontaler Rand Java Basics - Anfänger-Themen 4
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
J Ein mit UI-Designer erstelltes JPanel einblenden Java Basics - Anfänger-Themen 0
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
Zeppi JPanel responsive Grid Java Basics - Anfänger-Themen 0
J JPanel in JScrollPanel Java Basics - Anfänger-Themen 4
Elyt JPanel als HintergrundBild Java Basics - Anfänger-Themen 7
W 2 JPanel in einem JFrame Java Basics - Anfänger-Themen 4
B Wie kann man an ein JPanel eine Scrollbar anheften? Java Basics - Anfänger-Themen 8
O Swing JPanel Java Basics - Anfänger-Themen 4
CptK Klassen JPanel nach Ablauf der Spielzeit neuladen Java Basics - Anfänger-Themen 2
S JPanel wird nicht angezeigt Java Basics - Anfänger-Themen 1
D Animation JPanel Java Basics - Anfänger-Themen 1
M JLabels "verrutschen" beim übergeben von JPanel Java Basics - Anfänger-Themen 2
D Auf angeklicktes JPanel zugreifen Java Basics - Anfänger-Themen 5
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
D JPanel passt die Größe nicht an Java Basics - Anfänger-Themen 22
Y Webinhalt JPanel Java Basics - Anfänger-Themen 6
D Erste Schritte JPanel verschiebt Fenster via setVisible Java Basics - Anfänger-Themen 5
Dechasa Interface JFrame mit mehreren Übereinander liegenden JPanel Java Basics - Anfänger-Themen 5
S JPanel variablenabhängig erstellen Java Basics - Anfänger-Themen 13
J Methoden Dinge auf einem JPanel paltzieren Java Basics - Anfänger-Themen 1
Z JPanel wird zweimal hinterinander gezeichnet.. Wieso? Java Basics - Anfänger-Themen 4
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
J Probleme mit eigenem JPanel (IDE Eclipse) Java Basics - Anfänger-Themen 4
S JPanel wird versetzt auf JFrame gelegt Java Basics - Anfänger-Themen 2
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
R Focus auf JPanel im Thread Java Basics - Anfänger-Themen 9
I Problem mit JPanel Java Basics - Anfänger-Themen 0
B JPanel ändert die Hintergrundfarbe nicht Java Basics - Anfänger-Themen 2
F Threads funktionieren auf JPanel nicht Java Basics - Anfänger-Themen 1
C JPanel in MessageDialog Java Basics - Anfänger-Themen 1
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
gamebreiti Methoden JPanel nach clearAll() und add neu zeichnen Java Basics - Anfänger-Themen 1
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
Z JPanel bleibt leer Java Basics - Anfänger-Themen 2
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
Q JPanel Java Basics - Anfänger-Themen 2
K Erste Schritte jpanel in einer klasse auslagern Java Basics - Anfänger-Themen 3
I Anfängerfrage JPanel repaint() Java Basics - Anfänger-Themen 6
N String auf JPanel bewegen Java Basics - Anfänger-Themen 6
K Erste Schritte Jframe Im Jpanel Java Basics - Anfänger-Themen 4
S Layout mit JPanel in JScrollPanel funktioniert nicht Java Basics - Anfänger-Themen 3
S JPanel drucken -> PrinterException Java Basics - Anfänger-Themen 2
B JPanel -JTable Java Basics - Anfänger-Themen 2
H JPanel Hintergrund transparent setzen? Java Basics - Anfänger-Themen 10
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
L zoomen aus jpanel Java Basics - Anfänger-Themen 7
P Bekomme in meinen JPanel nur eine JComponente angezeigt Java Basics - Anfänger-Themen 7
A Methoden repaint() zeichnet JPanel falsch Java Basics - Anfänger-Themen 3
R JFrame über einen JPanel Java Basics - Anfänger-Themen 5
I Veränderungen am JPanel vom JDialog aus Java Basics - Anfänger-Themen 6
F JPanel zu klein Java Basics - Anfänger-Themen 5
D GUI - Objekte in JPanel nach oben schieben Java Basics - Anfänger-Themen 2
S JPanel wird nicht eingefügt Java Basics - Anfänger-Themen 3
P Netbeans Platform - JLabel und JPanel setLocation Problem Java Basics - Anfänger-Themen 2
Kenan89 JPanel mit JTable Java Basics - Anfänger-Themen 9
I JPanel in JPanel Java Basics - Anfänger-Themen 2
A Zugriff auf Komponente innerhalb einer JPanel Java Basics - Anfänger-Themen 8
J Auf einem JPanel ein JFrame platzieren Java Basics - Anfänger-Themen 10
S JPanel anzeige Java Basics - Anfänger-Themen 2
propra Wie mache ich einem JPanel mein bereits instanziertes Model bekannt Java Basics - Anfänger-Themen 9
T Zugreifen auf JPanel Java Basics - Anfänger-Themen 4
K JPanel auslagern Java Basics - Anfänger-Themen 9
J Paint Methode von JPanel aufrufen Java Basics - Anfänger-Themen 15
T Tastendruck simulieren in JPanel Java Basics - Anfänger-Themen 3
P JPanel in JTable einfügen Java Basics - Anfänger-Themen 23
E Erste Schritte Objekte werden in JPanel angedockt und maximiert Java Basics - Anfänger-Themen 7
M Componenten auf JPanel anzeigen Java Basics - Anfänger-Themen 2
F JPanel als JPG - weisse Fläche Java Basics - Anfänger-Themen 9
L Image laden und auf jPanel ausgeben Java Basics - Anfänger-Themen 7
M JLabel auf JPanel positionieren Java Basics - Anfänger-Themen 8
M Verständnisfrage zu JPanel Java Basics - Anfänger-Themen 3
M MouseListener funkioniert auf JPanel nicht Java Basics - Anfänger-Themen 8
D JPanel + ein JLabel Java Basics - Anfänger-Themen 8
B JPanel-Oberfläche speichern Java Basics - Anfänger-Themen 9
X JTable in JPanel in JTabbedPane mouseevent von jtable kommt nicht durch Java Basics - Anfänger-Themen 3
P GUI, JPanel Java Basics - Anfänger-Themen 7
D Grösse eines JPanel hinsichtlich LayoutManager festlegen Java Basics - Anfänger-Themen 4
B JPanel über anderem JPanel Java Basics - Anfänger-Themen 6
F zeichnen in JPanel Java Basics - Anfänger-Themen 7
F Unterschied JPanel und JFrame Java Basics - Anfänger-Themen 5
U JPanel dynamisch gestalten Java Basics - Anfänger-Themen 7
H Zeichnen in JPanel Java Basics - Anfänger-Themen 8
K Auf JPanel Zeichnen Java Basics - Anfänger-Themen 8
C jPanel im jPanel verändern Java Basics - Anfänger-Themen 15
B JPanel nachträglich verändern Java Basics - Anfänger-Themen 20
C JPanel erhält sporadisch keinen Fokus Java Basics - Anfänger-Themen 3
I repaint bei jpanel Java Basics - Anfänger-Themen 10
L JPanel vergrößern bis JScrollPane nicht mehr zu sehen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben