# Jpanel anzeigen



## CroweHammer (14. Okt 2009)

Guten Morgen Forum,

irgendwie bin ich gerade zu doof dafür mein JPanel mit Hintergrund in meinem mit einem BorderLayout bestückten JFrame anzuzeigen. Vielleicht ist es auch einfach noch zu früh und zu kalt für mein Gehirn 
Ich denke ihr könnt mir schnell Abhilfe leisten, hier mein Quellcode:

Klasse MainJFrame:

```
package trainingsplaner;

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;

public class MainJFrame extends JFrame
{
    public MainJFrame()
    {
        initComponents();
    }

    public static void main(String[] args)
    {
        new MainJFrame();
    }

    private void initComponents()
    {
        this.setMinimumSize(new Dimension(800, 400));
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(MainJFrame.EXIT_ON_CLOSE);
        BorderLayout borderLay = new BorderLayout();      
        borderLay.addLayoutComponent(new HeaderJPanel(800, 100), BorderLayout.NORTH);
        pack();
        this.setVisible(true);
    }
}
```
Klasse HeaderJPanel:

```
package trainingsplaner;

import java.awt.Color;
import javax.swing.JPanel;

public class HeaderJPanel extends JPanel
{
    public HeaderJPanel(int breite, int hoehe)
    {
        this.setBackground(Color.BLACK);
        this.setSize(hoehe, breite);
    }
}
```
Grüße CroweHammer


----------



## KrokoDiehl (14. Okt 2009)

Du musst in 
	
	
	
	





```
initComponents()
```
 noch ein 
	
	
	
	





```
setLayout(borderLay);
```
 machen ...


----------



## CroweHammer (14. Okt 2009)

```
private void initComponents()
{
    this.setMinimumSize(new Dimension(800, 400));
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(MainJFrame.EXIT_ON_CLOSE);
    BorderLayout borderLay = new BorderLayout();
    this.setLayout(borderLay);
    borderLay.addLayoutComponent(new HeaderJPanel(800, 100), BorderLayout.NORTH);
    pack();
    this.setVisible(true);
}
```

eingfügt und wird nach wie vor nicht angezeigt?


----------



## SlaterB (14. Okt 2009)

Komponenten muss man dem JFrame bzw. dessen ContentPane oder einem sonstigen JPanel per
add() 
hinzufügen, sämliche Layout-Befehle sind zweitrangig

siehe
BorderLayout (Java Platform SE 6)
da stehen doch diverse Beispiele, wie auch in jedem Tutorial zu Swing


----------



## KrokoDiehl (14. Okt 2009)

Hm ok. Ich mach's üblicherweise anders, daher weiß ich nicht genau, ob es über die 
	
	
	
	





```
addLayoutComponent()
```
-Methode so geht. Vielleicht hat damit dein Frame keine Verbindung zum HeaderPanel.

Probier mal:

```
this.setLayout(borderlay);
this.add(new HeaderJPanel(800, 100), BorderLayout.NORTH);
 // anstelle von borderlay.addLayoutComponent()
```

*edit*
Ok, _SlaterB _weiß es


----------



## CroweHammer (14. Okt 2009)

Gibt auch nichts, was du nicht weist, vielen Dank, mit einen einfachen JFrame.add bzw. this.add(...) funktioniert das einwandfrei. Hier meine Lösung:

```
private void initComponents()
{
    this.setMinimumSize(new Dimension(800, 400));
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(MainJFrame.EXIT_ON_CLOSE);
    BorderLayout borderLay = new BorderLayout();
    this.setLayout(borderLay);
    this.add(new HeaderJPanel(800, 100), BorderLayout.NORTH);
    pack();
    this.setVisible(true);
}
```

Gruß crowehammer

PS: KrokoDiehl, sry deine Lösung ist die gleiche, kam aber erst an während ich meine Lösung geschrieben hab, trotzdem vielen Dank, auf euch kann man zählen!


----------



## SlaterB (14. Okt 2009)

naja, ob addLayoutComponent() nicht irgendwie zum Ziel führen KANN, kann ich nicht beschwören  ,
aber man sieht ja, dass es zumindest der komplizierte Weg wäre


----------

