javanewbie: Kämpfe mit Layouts in java

Hallo,

Ich versuche eine Fenster für eine Überweisung zu layouten bekomme das aber nicht so hin, wie ich möchte. ich habe zwar die Elemente angeordnet (aber wie =8-/ ). So ein Überweisungsformular hat doch bestimmt mal jemand gemacht, weiß jemand wo man so etwas runterladen kann.

Vielleicht hat aber auch jemand einen Verbesserungsvorschlag wie ich meine Code verbessern kann.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Ueberweisung{

public Ueberweisung() {
    JFrame f = new JFrame ("Neue Überweisung anlegen");
    Container inhalt = f.getContentPane();
    inhalt.setLayout (new BoxLayout(inhalt,BoxLayout.Y_AXIS) );//Gridlayout:reihe, spalte,hgap,vgap
    // ----- Panels bereitstellen --------
    JPanel eingabePanels = new JPanel();
    JPanel buttonRowPanel = new JPanel();
    // ----- PanelLayouts zuweisen -------
    eingabePanels.setLayout (new BorderLayout() );
    buttonRowPanel.setLayout (new FlowLayout(FlowLayout.RIGHT) );

// ----- Panels fuellen --------------
    // ----- Eingabefelderpanel ----------
    JPanel feldPanel1 = new JPanel();
    feldPanel1.add(new JLabel ("<html><p align="right"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Von Konto</b></p></html>"));
    feldPanel1.add(new JTextField( 30 ));

JPanel feldPanel2 = new JPanel();
    feldPanel2.add(new JLabel ("<html><p align="right"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inhaber</b></p></html>"));
    feldPanel2.add(new JTextField( 30 ));

JPanel feldPanel3 = new JPanel();
    feldPanel3.add(new JLabel ("<html><p align="right"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Empf&auml;nger</b></p></html>"));
    feldPanel3.add(new JTextField( 30 ));

JPanel feldPanel4 = new JPanel();
    feldPanel4.add(new JLabel ("<html><p align="right"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kontonummer</b></p></html>"));
    feldPanel4.add(new JTextField( 30 ));

JPanel betragPanel = new JPanel();
    betragPanel.add( new JTextField( 16 ) );
    betragPanel.add( new JLabel ("<html><p align="center"><b>,</b></p></html>") );
    betragPanel.add( new JTextField( 4 ) );
    betragPanel.add( new JLabel ("<html><p align="center"><b>€</b></p></html>") );
    JPanel feldPanel5 = new JPanel();
    feldPanel5.add(new JLabel ("<html><p align="right"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Betrag</b></p></html>"));
    feldPanel5.add(betragPanel);

JPanel feldPanel6 = new JPanel();
    feldPanel6.add(new JLabel ("<html><p align="right"><b>&nbsp;&nbsp;&nbsp;Verwendungszweck</b></p></html>"));
    feldPanel6.add(new JTextField( 30 ));
    // -------- Buttonpanel --------------
    JButton butCancel = new JButton ( "Cancel");
    // but.addActionListener ( ... );
    butCancel.setToolTipText("Hiermit bestätigen Sie Ihre Auswahl.");
    buttonRowPanel.add(butCancel);
    JButton butOkay = new JButton ( "Okay");
    // but.addActionListener ( ... );
    butOkay.setToolTipText("Hiermit bestätigen Sie Ihre Auswahl.");
    buttonRowPanel.add(butOkay);

// ---- Panels zum inhalt hinzufügen.
    inhalt.add(feldPanel1);
    inhalt.add(feldPanel2);
    inhalt.add(feldPanel3);
    inhalt.add(feldPanel4);
    inhalt.add(feldPanel5);
    inhalt.add(feldPanel6);
    inhalt.add(buttonRowPanel);

f.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);

f.setSize(600,320);//breite, hoehe
    f.toFront();
    f.setVisible(true);
  }
}

  1. Hi,

    Hallo,

    Vielleicht hat aber auch jemand einen Verbesserungsvorschlag wie ich meine Code verbessern kann.

    Also mal unabhängig von deinem Code...es ist nicht schön, HTML in JLabels zur Gestaltung zu benutzen.

    Benutze lieber die Java eigenen LayoutManager dafür...die kann man auch schachteln...such doch mal bei Google nach java LayoutManager Howto oder so...es gibt massenweise beispiele und erklärungen dazu.

    schönen Gruß
    .sea.monkey.

    1. Also mal unabhängig von deinem Code...es ist nicht schön, HTML in JLabels zur Gestaltung zu benutzen.

      Aber es hat geklappt. Und manchmal heiligt der Zweck die Mittel

      Benutze lieber die Java eigenen LayoutManager dafür...die kann man auch schachteln...such doch mal bei Google nach java LayoutManager Howto oder so...es gibt massenweise beispiele und erklärungen dazu.

      Das habe ich versucht, aber leider habe ich nichts passendes gefunden. Hat nicht jemanden einen Link hierfür?

  2. Hi,

    mit den Layoutmanager, die beim Java-SDK dabei sind, kann man zwar alles hinkriegen, aber teilweise ist ein gutes Ergebnis recht schwierig hinzubekommen.

    Mit dem Layout-Manager von http://www.jgoodies.com kann sehr einfach und schnell gute Forumlare hinbekommen, gucks' dir einfach mal an!

    Auf der Seite gibts auch ganz einfache Beispiele.
    Darüber hinaus gibts dort auch ein super Look&Feel, was deinen Oberflächen mit drei Zeilen mehr ca. doppelt so professionell aussehen lässt!

    Der Blick lohnt sich also auf alle Fälle!

    Viele Grüße
    Daniel N.

    1. Hi noch mal,

      ich habe noch einen wichtigen Hinweis vergessen:
      Es handelt sich bei den aufgeführten Produkten um Open-Source!

      Viele Grüße
      Daniel N.