# dynamisch weitere jpanels untereinander hinzufügen



## anti43 (9. Mrz 2007)

aalso:

ich habe ein jpanel, dem ich dynamisch weitere jpanels hinzufügen will, die sich dann zeilenweise untereinander aneinanderreihen.
wie kann ich das anstellen? also bis jetzt bin ich soweit:

```
class k extends JPanel{
        

        public k(){
            

            JCheckBox jCheckBox1 = new JCheckBox();
            
            this.setLayout(new java.awt.GridLayout());
            
            jCheckBox1.setText("Nummer");
            jCheckBox1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
            jCheckBox1.setMargin(new java.awt.Insets(0, 0, 0, 0));
            this.add(jCheckBox1);
            
            this.add(new JLabel("test1");
            this.add(new JLabel("test2");
        }   
    }
    
    private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {                                      
        

            
            rechnungSearchPanel.add(new k, java.awt.BorderLayout.NORTH);
       
    }
```


aber irgendwie hauts nicht hin, es wird immernur das erste hinzugefügt(oder sichtbar,ka). es muss wohl mit den layouts zusammenhängen, aber wie gehts richtig?? :roll:


----------



## SlaterB (9. Mrz 2007)

was heißt denn 'dynamisch'?
und wo willst du weitere JPanel einfügen?

bisher versuchst du doch einfach nur ein GridLayout mit 3 Komponenten zu erstellen oder sehe ich das falsch?

wie das geht würde ich an deiner Stelle zunächst mal in einem Tutorial nachlesen?
und dortige Beispiele als Grundlage verwenden...

http://java.sun.com/docs/books/tutorial/uiswing/layout/grid.html


-------

oder liegt das Problem unten beim BorderLayout?
dann ist das doch klar, bei BorderLayout gibts nur ein Element im Nord-Bereich,
also brauchst du ein anderes Layout..

FlowLayout z.B.


----------



## WieselAc (9. Mrz 2007)

du musst deinem rechnungSearchPanel ein vernünftiges layout setzen. Da gibt es einige mit denen das geht, BorderLAyout gehört nicht dazu. Aber mit den GridLayout, das du in k benutzt sollte es gehen.


----------



## Wildcard (9. Mrz 2007)

WieselAc hat gesagt.:
			
		

> du musst deinem rechnungSearchPanel ein vernünftiges layout setzen. Da gibt es einige mit denen das geht, BorderLAyout gehört nicht dazu. Aber mit den GridLayout, das du in k benutzt sollte es gehen.


Das geht auch bei BorderLayout.
Nach dem hinzufügen/entfernen von Komponenten muss allerdings validate auf dem Container aufgerufen (das ist bei jedem Layout so).


----------



## anti43 (9. Mrz 2007)

hm also mit gridlayout mit y_axis und prefered size gehts soweit, aber leider fängt er nicht oben an ,sondern in der mitte und schiebt sich dann nach oben, je mehr es werden.. wie kann ich denn ddirekt oben anfangen??
mit borderlyout macht er die panels übereinander glaub ich.


----------



## WieselAc (9. Mrz 2007)

Ehrlich? hab mich da nie wirklich mit beschäftigt. 

Ich kann also immer "south" was hinzufügen und mir so beliebig viele "zeilen" anlegen?


----------



## anti43 (9. Mrz 2007)

nein, also bei mir legt er die panels dann ÜBEREINANDER


----------



## Wildcard (9. Mrz 2007)

WieselAc hat gesagt.:
			
		

> Ich kann also immer "south" was hinzufügen und mir so beliebig viele "zeilen" anlegen?


Nein, dann hab ich dich falsch verstanden.
Borderlayout verwaltet maximal 5 Komponenten. Eine in jeder Area.


----------



## WieselAc (9. Mrz 2007)

OK, dann hatte ich das doch richtig verstanden.

Allerdings habe ich oben auch ein echt mieses Deutsch an den Tag gelegt!


----------



## anti43 (9. Mrz 2007)

... also mit gridlayout mit y_axis und prefered size gehts soweit, aber leider fängt er nicht oben an ,sondern in der mitte und schiebt sich dann nach oben, je mehr es werden.. wie kann ich denn ddirekt oben anfangen??


----------



## SlaterB (9. Mrz 2007)

beim FlowLayout kannst du ein alignment angeben..
http://java.sun.com/docs/books/tutorial/uiswing/layout/flow.html

ansonsten ein Trick:
GridLayout verwenden, aber das Panel nicht größer als nötig werden lassen 
sondern in das umschließende Panel (mit fester Größe?) als einzige Komponente in ein FlowLayout einfügen


----------

