Veröffentlicht 30. Juni 200619 j hallo zusammen, Ich versuche zur zeit mir Java beizubringen(hab nur in c++ ahnung) und bin jetzt auf folgendes problem gestoßen: So sieht das Programm jetzt aus: Und ich will aber, dass "Test" in der Mitte steht, darunter ein weiteres Labelfenster, indem später Daten ausgegeben werden, dann Button 1 und 2 unter dem Label, Button 3 in der Mitte unter den beiden anderen Buttons,so wie jetzt auch nur gleich groß, und Button 4 unten rechts..... Mein Quellcode sieht zur zeit so aus: Test.java: import java.awt.*; public class Test extends Frame { private GridLayout myGridLayout = new GridLayout(2,0); private MyWindowListener myWindowListener = new MyWindowListener(); private MyActionListener myActionListener = new MyActionListener(); private Button btn1 = new Button("1"); private Button btn2 = new Button("2"); private Button btn3 = new Button("3"); private Button btn4 = new Button("4"); private Panel pnlNorth = new Panel(new BorderLayout()); private Panel pnlCenter = new Panel(new GridLayout(2,0)); private Panel pnlSouth = new Panel(new FlowLayout(FlowLayout.RIGHT)); private Label lblUeberschrift = new Label("Test"); private Label lbl = new Label(""); public Test() { this.setTitle("Test"); this.lblUeberschrift.setFont(new Font("",Font.BOLD,16)); this.pnlNorth.add(lblUeberschrift); this.setSize(300,300); this.pnlNorth.add(btn1, BorderLayout.WEST); this.pnlNorth.add(btn2, BorderLayout.EAST); this.pnlCenter.add(btn3); this.pnlSouth.add(btn4); this.add(pnlNorth, BorderLayout.NORTH); this.add(pnlCenter, BorderLayout.CENTER); this.add(pnlSouth, BorderLayout.SOUTH); this.show(); this.addWindowListener(this.myWindowListener); this.btn1.addActionListener(this.myActionListener); this.btn2.addActionListener(this.myActionListener); this.btn3.addActionListener(this.myActionListener); this.btn4.addActionListener(this.myActionListener); } public static void main(String args[]) { Test f = new Test(); } } MyWindowListener: import java.awt.event.*; public class MyWindowListener extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } MyActionListener: import java.awt.event.*; public class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { int wert = Integer.parseInt(e.getActionCommand()); switch(wert) { case 1: System.exit(0); case 2: System.out.println("Button 2"); break; case 3: System.out.println("Button 3"); break; case 4: System.out.println("Button 4"); break; } } } Danke im voraus für eure Hilfe! Mfg Wanki
30. Juni 200619 j Hast du dich denn bereits mit dem Konzept eines LayoutManagers befasst? Wenn nein: http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html Gerade für ein Layout wie von dir gewünscht bietet sich dann eigentlch an: http://www.jgoodies.com/freeware/forms/
30. Juni 200619 j ja habe ich! Wie man im Quellcode erkennen kann habe ich es auch schon mit Borderlayout,FlowLayout und Gridlayout probiert.
30. Juni 200619 j Dann mal dochmal dein Ziellayout auf einem Blatt Papier auf, und versuch dir klarzumachen, wo die groben Bereiche sind, die du über verschiedene Panels mit verschiedenen Layouts abbilden willst. Wenn du dann noch genauere Hilfe brauchst poste hier mal diesen Entwurf - deine Beschreibung ist da nämlich ein wenig ungenau bzw. nicht besonders klar.
3. Juli 200619 j Hast du dich denn bereits mit dem Konzept eines LayoutManagers befasst? zur Not gibts ja noch null mit hilfe von GUI-Editoren kann man dann ein Layout erstellen mit absoluten Positionen, allerdings reagieren die nicht mehr dynamisch auf veränderungen der fenstergrösse
3. Juli 200619 j zur Not gibts ja noch null Null-Layout als Empfehlung? Dafür kann es nur eins geben: :-) allerdings reagieren die nicht mehr dynamisch auf veränderungen der fenstergrösseNicht nur auf Veränderungen der Fenstergröße. Wenn der User eine andere Auflösung eingestellt hat oder auch nur andere Systemschriftarten verwendet kann es schon zu Problemen kommen. Oder irgendwer kommt auf die Idee ein neues LaF verwenden zu wollen, wo die Komponenten plötzlich ganz andere Proportionen einnehmen... oder, oder, oder... mögliche Fehlerquellen ließen sich noch ein paar mehr finden. Darum: Finger weg!
3. Juli 200619 j manche lesen nur was sie wollenEben! Wenn jemand sich nicht mit den Konzepten hinter der eigentlichen Logik beschäftigen möchte, dann wird er imemr zur - scheinbar - einfachsten Lösung greifen. In diesem Fall eben einem null Layout. Die Tatsache, dass du "zur Not" geschrieben hast wird da wenig ins Gewicht fallen, weil für den Betreffenden sozusagen schon längst der Notstand ausgebrochen ist. Von daher: Auch nicht zur Not! Ich habe bisher noch keinen Anwendungsfall gesehen, wo ein Null Layout wirklich sinnvoll eingesetzt worden ist bzw. sinnvoll hätte eingesetzt werden können.
6. Juli 200619 j Ungetestet aber ziemlich sicher: FormLayout layout = new FormLayout( /* COLS */ "fill:200px, fill:200px, fill:200px", /* ROWS */ "fill:50px, 8dlu, fill:pref, 8dlu, fill:pref, fill:0px:grow, fill:pref" ); PanelBuilder builder = new PanelBuilder(layout); builder.add(label, cc.xywh(1, 1, 3, 1)): builder.add(button1, cc.xywh(1, 3, 1, 1)): builder.add(button2, cc.xywh(3, 3, 1, 1)): builder.add(button3, cc.xywh(2, 5, 1, 1)): builder.add(button4, cc.xywh(3, 7, 1, 1)): JPanel resultPanel = builder.getPanel();
13. Juli 200619 j Und wo füg ich das jetzt ein??? Also in welchen Teil vom Quelltext....... hab das mal eingefügt da kommen dann aber zig fehler also hab ichs wohl falsch eingefügt.....
13. Juli 200619 j Und wo füg ich das jetzt ein?Na da, wo das Layout des Panels erstellt werden soll. hab das mal eingefügt da kommen dann aber zig fehlerWas mich nicht wirklich wundert. Wie gesagt: Ungetestet und mal eben auf die schnelle Hingeschrieben. Das ganze soll nicht als fertige Lösung dienen, sondern als Lösungsansatz anhand dessen du dir dein eigenes Layout zusammenstellen kannst. Und solange du nicht den Wortlaut der Fehlermeldungen postest kann dir sowieso niemand weiterhelfen.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.