manuel5
Goto Top

Graphische Benutzerflächen und Layout-Manager

Hallo zusammen,

fange grad mit Java an. Und schon hab ich das erste Problem bei dem ich,
trotz intensivem Studium diverser Tutorials und Anleitung nicht durchsteig.

Folgendes - ich möchte Grafische Objekt untereinander in ein Applet anordnen mit dem Layout-Mangager,
genauer gesagt mit dem FlowLayout.

package grafiktest;

import java.awt.* ;
public class GrafikTest extends java.applet.Applet 

{ 
Button AbschickenButton = new Button("Abschicken");  
Button LöschenButton = new Button("Löschen");    

Checkbox cb1 = new Checkbox("Freunde",  false);   
Checkbox cb2 = new Checkbox("Werbung",  true);   
Checkbox cb3 = new Checkbox("Suchmaschine",  false);   
Checkbox cb4 = new Checkbox("Suchmaschine",  false);  

TextField tf1 = new TextField("Name",15);   
TextField tf2 = new TextField("Vorname",15);   
TextField tf3 = new TextField("eMal-Adresse",15);  

Panel f1 = new Panel(); 
Panel f2 = new Panel(); 
Panel p3 = new Panel(); 
Panel p4 = new Panel();
Panel hauptpanel = new Panel(); 

public void init() 

{ 
Choice select = new Choice(); 
select.addItem("DE");   
select.addItem("A");   
select.addItem("CH");  
select.addItem("I");  
select.addItem("USA");  

f1.add(AbschickenButton); 
f1.add(LöschenButton); 

f1.add(cb1); 
f1.add(cb2); 
f1.add(cb3); 
f1.add(cb4);

f1.add(tf1);
f1.add(tf2);
f1.add(tf3);

//p3.add(BorderLayout.SOUTH, select); 

FlowLayout fl = new FlowLayout(FlowLayout.LEFT,10,10);
setLayout(new FlowLayout());
FlowLayout f2 = new FlowLayout(FlowLayout.LEFT,20,30);

p4.setLayout(fl);
hauptpanel.setLayout(new FlowLayout()); 
hauptpanel.add(BorderLayout.EAST, f1); 
//hauptpanel.(BorderLayout.CENTER, p3); 
hauptpanel.add(BorderLayout.EAST, p3);
hauptpanel.add(BorderLayout.WEST, p4);
add(hauptpanel); 
} 

}
(dieser Code sieht leider nun schon etwas ramponiert aus da ich da ständig am versuchen bin, bitte um Nachsicht face-sad( )

Also ich will die Texboxen in eine Zeile, die Checkboxen is die nächste.

Ich brauch nun nicht den korrekten Code, sonder eine "Erläuterung" wie ich wo wann anfange - Panels und Layout etc zu erstellen und anzugeben.

Ich hoffe ihr könnt mir helfen, ich bin echt schon am verzweifeln.


Gruß Manuel

Content-Key: 99911

Url: https://administrator.de/contentid/99911

Printed on: April 19, 2024 at 04:04 o'clock

Member: lobotomie
lobotomie Oct 22, 2008 at 08:14:29 (UTC)
Goto Top
Du hast zunächst einmal die Variable f1 doppelt deklariert. Damit verlierst Du natürlich alle Infos, die Du im Panel f1 gespeichert hast.

Zweitens solltest Du versuchen Sonderzeichen im Code (die nicht zu Kommentaren gehören) zu vermeiden.
Member: manuel5
manuel5 Oct 22, 2008 at 08:45:53 (UTC)
Goto Top
Hallo lobotomi,

ist dies nun besser?

package grafiktest;

import java.awt.* ;
public class GrafikTest extends java.applet.Applet 

{ 
Button AbschickenButton = new Button("Abschicken");  
Button LöschenButton = new Button("Löschen");    

Checkbox cb1 = new Checkbox("Freunde",  false);   
Checkbox cb2 = new Checkbox("Werbung",  true);   
Checkbox cb3 = new Checkbox("Suchmaschine",  false);   
Checkbox cb4 = new Checkbox("Suchmaschine",  false);  

TextField tf1 = new TextField("Name",15);   
TextField tf2 = new TextField("Vorname",15);   
TextField tf3 = new TextField("eMal-Adresse",15);  

Panel f1 = new Panel(); 
Panel f2 = new Panel(); 
Panel p3 = new Panel(); 
Panel p4 = new Panel();
Panel hauptpanel = new Panel(); 

public void init() 

{ 
Choice select = new Choice(); 
select.addItem("DE");   
select.addItem("A");   
select.addItem("CH");  
select.addItem("I");  
select.addItem("USA");  

f1.add(AbschickenButton); 
f1.add(LöschenButton); 

f1.add(cb1); 
f1.add(cb2); 
f1.add(cb3); 
f1.add(cb4);

f1.add(tf1);
f1.add(tf2);
f1.add(tf3);

FlowLayout fl = new FlowLayout(FlowLayout.LEFT,10,10);
FlowLayout f2 = new FlowLayout(FlowLayout.LEFT,20,30);

hauptpanel.setLayout(new FlowLayout()); 
hauptpanel.add(BorderLayout.EAST, f1); 
add(hauptpanel); 
} 

}

Mir würde es auch reichen, einfach mal zu erklären wie ich eine zweite Zeile treinbekomme.
So wen ich das Applet starte wird mir alles in einer Zeile angezeigt....

Gruß Manuel
Member: lobotomie
lobotomie Oct 22, 2008 at 09:26:44 (UTC)
Goto Top
Hallo Manuel,

Du hast immer noch in Zeile 19 und 20 f1 und f2 als Panel deklariert und überschreibst auch immer noch in Zeile 47 und 48 f1 und f2 mit FlowLayouts.

In AWT ist es so, dass man Objekte (CheckBox, TexField, Choice, Panel, usw) unter Zuhilfenahme von LayoutManagern (hier FlowLayout) auf Containern (Panel, Applet, usw.) positioniert.

Wenn Du ein anderes Layout willst, versuche doch einmal GridLayout oder ähnliches.
Member: manuel5
manuel5 Oct 22, 2008 at 09:40:46 (UTC)
Goto Top
Hallo,

ok - hab ich nun rausgeschmissen - passt der Code nun so?
Und wie bekomm ich nun ne zweite Zeile rein? face-sad

package grafiktest;

import java.awt.* ;
public class GrafikTest extends java.applet.Applet 

{ 
Button AbschickenButton = new Button("Abschicken");  
Button LöschenButton = new Button("Löschen");  

Checkbox cb1 = new Checkbox("Freunde",  false);   
Checkbox cb2 = new Checkbox("Werbung",  true);   
Checkbox cb3 = new Checkbox("Suchmaschine",  false);   
Checkbox cb4 = new Checkbox("Suchmaschine",  false);  

TextField tf1 = new TextField("Name",15);   
TextField tf2 = new TextField("Vorname",15);   
TextField tf3 = new TextField("eMal-Adresse",15);  

Panel f1 = new Panel(); 
Panel hauptpanel = new Panel(); 

public void init() 

{ 
Choice select = new Choice(); 
select.addItem("DE");   
select.addItem("A");   
select.addItem("CH");  
select.addItem("I");  
select.addItem("USA");  

f1.add(AbschickenButton); 
f1.add(LöschenButton); 

f1.add(cb1); 
f1.add(cb2); 
f1.add(cb3); 
f1.add(cb4);

f1.add(tf1);
f1.add(tf2);
f1.add(tf3);

FlowLayout flow = new FlowLayout(FlowLayout.LEFT,10,10);
f1.setLayout(flow); 
hauptpanel.setLayout(new FlowLayout()); 
hauptpanel.add(BorderLayout.EAST, f1); 
add(hauptpanel); 
} 

}

Also bei PHP oder VB/VBA ist das leichter face-smile

Gruß Manuel
Member: manuel5
manuel5 Oct 22, 2008 at 12:41:41 (UTC)
Goto Top
Tja,

das Leben ist kein Kindergeburtstag face-smile

Habe es nun raus wie ich mehrer "Zeilen" anlege

package grafiktest;

import java.awt.* ;
public class GrafikTest extends java.applet.Applet 

{ 
Button AbschickenButton = new Button("Abschicken");  
Button LöschenButton = new Button("Löschen");  

Checkbox cb1 = new Checkbox("Freunde",  false);   
Checkbox cb2 = new Checkbox("Werbung",  true);   
Checkbox cb3 = new Checkbox("Suchmaschine",  false);   
Checkbox cb4 = new Checkbox("Suchmaschine",  false);  

TextField tf1 = new TextField("Name",15);   
TextField tf2 = new TextField("Vorname",15);   
TextField tf3 = new TextField("eMal-Adresse",15);  

Panel f2 = new Panel(); 
Panel hauptpanel = new Panel(); 

public void init() 

{ 
    
f2.add(tf1);
f2.add(tf2);
f2.add(tf3);

f2.add(cb1); 
f2.add(cb2); 
f2.add(cb3); 
f2.add(cb4);

Choice select = new Choice(); 
select.addItem("DE");   
select.addItem("A");   
select.addItem("CH");  
select.addItem("I");  
select.addItem("USA");  
f2.add(select);

f2.add(AbschickenButton); 
f2.add(LöschenButton); 

FlowLayout flow = new FlowLayout(FlowLayout.LEFT,10,10);
f2.setLayout(new GridLayout(0, 3));
hauptpanel.setLayout(new FlowLayout()); 
hauptpanel.add(BorderLayout.EAST, f2);
add(hauptpanel); 
} 

}

aber wie ich nun die 3 Textfelder und darunter die 4 Checkboxen darunter dann die Combobox und dann darunter die Buttons bekomm weiss ich leider noch nicht.
Also wenn mir hier eine nen Tipp geben will/kann/mag -.ruhig her damit face-smile

Gruß Manuel