Zum Inhalt springen

Button ausrichtung (Welche Formatierung?)


Empfohlene Beiträge

Geschrieben

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:

Test.jpg

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

Geschrieben

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.

Geschrieben
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

Geschrieben
zur Not gibts ja noch null

Null-Layout als Empfehlung? Dafür kann es nur eins geben:

peitsch.gif

:-)

allerdings reagieren die nicht mehr dynamisch auf veränderungen der fenstergrösse
Nicht 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!
Geschrieben
manche lesen nur was sie wollen
Eben! 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.

Geschrieben

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();

Geschrieben

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.....:(

Geschrieben
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 fehler
Was 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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...