JPanel einfügen in MainClass

Schaaaf

Bekanntes Mitglied
Hallo,

ich habe folgende Main-Klasse:

Java:
public class ParallelCoordClass extends JFrame {
...
}

In dieses möchte ich ein JPanel enfügen am rechten Rand:

Java:
public class Properties extends JPanel{
public static void setPanel() {
	JPanel propPanel = new JPanel();
	propPanel.setName("Properties");
	propPanel.setBackground(Color.red);
	}	
}

Nun die Fragen :
1. Wie kriege ich das Panel an den rechten Rand?
2. Wie wird es in die Main Klasse eingebunden? Habe es bereits mit :

Java:
Properties prop = new Properties();
myclass.add(prop);

versucht, aber das geht nicht. Da habe ich dann nur ein großes grauen Fenster.

Kann mir jemand helfen?
 
Java:
public class Properties extends JPanel{
public static void setPanel() {
    JPanel propPanel = new JPanel();
    propPanel.setName("Properties");
    propPanel.setBackground(Color.red);
    }   
}
Diese Klasse zeigt mir, dass hier schonmal ein prinzipielles Unverständnis vorliegt (nicht bös gemeint). Die Methode setPanel() ist statisch - warum? Sie erzeugt ein lokales JPanel, das jedoch sofort wieder verworfen wird (weil es lokal ist). Es hat nichts mit der erbenden Klasse Properties zutun.

Wenn du ein "rotes Panel" als Klasse haben willst, wäre folgendes Vorgehen korrekt:
Java:
public class Properties extends JPanel {
    /** Konstruktor */
    public Properties() {
        super();
        this.setBackground(Color.red); //eigene (this) Hintergrundfarbe setzen 
    }
}

Damit könnte auch dein MyClass-Frame das Rote Panel anzeigen. Schau dir mal die Swingtutorials (Trail: Creating a GUI With JFC/Swing (The Java™ Tutorials)) an. Vor allem die Layout-Manager (Using Layout Managers (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)).
 
Schließe mich meinem Vorredner an. Hier liegt an mangelndes Verständnis von Vererbung und wie man diese nutzt vor. Prinzipiell ist es das selbe Problem wie gestern:
http://www.java-forum.org/allgemeine-java-themen/131660-jlabel-jpanel.html#post862964
Wenn eine Klasse von JPanel erbt, macht es keinen Sinn darin ein zweites Panel zu erzeugen (ausser es wird tatsächlich benötigt).
In Deinem Fall nimmst Du einen weißen Karton und in den Du einen zweiten buntangemalten Karton reinstellst. Den weißen Karton stellst Du dann ins Regal und wunderst Dich, dass der Karton weiß und nicht bunt ist ;-)
 
Danke für die bildliche Beschreibung (--> Karton). Jetzt ist es mir klar, was daran nicht gehen kann.
Vielen Dank.

Jetzt habe ich es geändert und in der MainClass mit

Java:
myclass.add(prop, BorderLayout.EAST);

aufgerufen. Naja, allerdings habe ich jetzt nur einen roten Streifen am rechten Rand. Das Panel hat doch aber per

Java:
this.setSize(100,100)

eine Größe von mir bekommen.

Warum ist dann trotzdem nur ein Streifen zu sehen?
 
Zuletzt bearbeitet:

Zurück
Oben