Swing: Panel in Panel erzeugen

kor

Mitglied
Hallo
Ich möchte in einem Panel ein weiteres Panel einfügen. Mein Problem ist, dass die Layoutplatzierung nicht funktioniert

Java:
public class Panel extends JPanel{

	
	public Panel(int breite, int höhe,Color col){
		
		JPanel west  = new JPanel();   
                          west.setBackground(Color.orange);
		west.setPreferredSize(new Dimension(10,20));
		add(west,"West");  [B] //dieser befehl funktioniert irgendwie nicht[/B]		

		this.setBackground(col);
		this.setPreferredSize(new Dimension(breite,höhe));
		
	}

lg
 
ok
Haben mich etwas undeutlich ausgedrückt.

Habe jetzt zwei Hilder beigefügt. Das erste zeigt an wie der Frame aussieht der mit dem code erstellt wird. Das Zweite Bild ist das Ergebniss, dass ich haben möchte.

Hauptprogramm:
Java:
	public static void main(String[] args) {
		
		Fenster f = new Fenster(800,500);
		f.showIt("1.Fenster", 100, 100);
		Platz p0 = new Platz(200,100,Color.red);
		f.getContentPane().add(p0,"West");
	}

Klasse:
Java:
public class Platz extends JPanel{
	
	public Platz(int breite, int höhe,Color col){
		
		JPanel west  = new JPanel();   west.setBackground(Color.green);
		west.setPreferredSize(new Dimension(10,20));
		add(west,"West"); 
		
		JPanel north  = new JPanel();   north  .setBackground(Color.yellow);
		north .setPreferredSize(new Dimension(10,20));
		add(north,"North"); 
		

		this.setBackground(col);
		this.setPreferredSize(new Dimension(breite,höhe));	
	}
 

Anhänge

  • forum_ist.JPG
    forum_ist.JPG
    31,9 KB · Aufrufe: 45
  • forum_soll.JPG
    forum_soll.JPG
    35,5 KB · Aufrufe: 44
Java:
public class Platz extends JPanel{
    
    public Platz(int breite, int höhe,Color col){
        
this.setLayout(new BorderLayout());

        JPanel west  = new JPanel();   west.setBackground(Color.green);
        west.setPreferredSize(new Dimension(10,20));
        add(BorderLayout.WEST, west); 
        
        JPanel north  = new JPanel();   north  .setBackground(Color.yellow);
        north .setPreferredSize(new Dimension(10,20));
        add(BorderLayout.NORTH, north); 
        
 
        this.setBackground(col);
        this.setPreferredSize(new Dimension(breite,höhe));  
    }
 
Hallo
Herzlichen Dank so funktionierts.

Habe angenommen, das Panels auch standardmäßig das Border-Layout haben so wie Frames. ist wohl eine falsche annahme gewesen.

Lg
 
Hallo
Jetzt habe ich noch eine Frage.

ich habe Zahlen (JLabel) mittels eines Panels (layout: BorderLayout) ausgegeben. Diese stehen jetzt untereinander (siehe Anhang).

Kann man den Abstand dieser Zahlen verkleinern so dass diese näher beisammenstehen, ohne die Schriftgröße zu ändern?
 

Anhänge

  • forum_label.JPG
    forum_label.JPG
    27,7 KB · Aufrufe: 34
Ggf. die größen der Labels mit setPreferredSize passend setzen - dort die "richtige" Höhe anzugeben könnte schwierig werden (wenn man's "gut" machen will) weil man die dann doch wieder aus der Fontgröße heraus ausrechnen muss, aber wäre zumindest eine Option...
 
Eine Frage: In deiner Klasse, die von JPanel abstammt fehlt doch am Anfang das "super();". Rein theoretisch sollte es doch sonst gar nicht gehen, oder?

Gruß, Thomas
 

Zurück
Oben