tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
370
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    hesk hesk ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    192
    Hallo!

    Meine Frage bezieht sich hauptsächlich auf das Design. Wohin mit einer ErrorMessage.

    Folgendes Bild - Ein JPanel mit folgendem Aufbau:

    /--------------------------\
    | -Label- -JTextField- |
    | -Label- -JTextField- |
    | |
    | -Abort- -Save- |
    \--------------------------/


    Ein Dialog wo etwas eingegeben werden kann.
    Mit dem klick auf den Save-Button wird die Eingabe überprüft.
    Falls richtig gehts weiter, falls falsch soll der User informiert werden dass die Eingabe falsch ist.
    Dies möchte ich aber nicht mit einem extra jdialog machen den der User dann wegklicken muss, sondern ich hätte gern etwas wie einen jtoolTip der als Error Dient.

    Also man drückt auf den save-Button, wenn die Eingabe falsch ist, dann kommt über dem JTextField ein roter ToolTip der die ErrorMessage enthält, und so lange bleibt bis der User die Eingabe im Feld ändert.


    Oder fällt jemanden eine bessere Lösung zur Error-Darstellung ein?
    Das JPanel vergrößern damit man rechts neben dem JTextField ein Label hingeben kann finde ich auch nicht schön, da dann das JPanel am Anfang komisch aussehen würde.

    Vielen Dank
     

  2. #2
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Hi,
    wie wäre es denn mit einer Statusbar? Da kannst du alle Messages - ob gut oder schlecht - anzeigen lassen.

    Gruß

    Fabio
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  3. #3
    hesk hesk ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    192
    Eine Statusbar ist nur so breit wie das Fenster an sich. Und dies bietet dann nicht genügend Platz um alle Fehlermeldung auszugeben.
    Mache ich die Statusbar so hoch damit sich alles ausgeht, ist wieder das Problem dass am Anfang der Bereich leer ist und es blöd aussieht.
     

  4. #4
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Du kannst die Statusbar so hoch machen, dass eine Zeile Text rein passt. Sollte der Text mehrere Zeilen haben, kann dieser - z.B. via Mouseover-effekt - im Tooltip angezeigt werden.
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  5. #5
    hesk hesk ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    192
    Ich hab mich nun dazu entschieden mit Icons zu arbeiten.

    Folgender Aufbau

    Label(zb Datum: | Textfield(Eingabe) | Label(icon)

    Das icon am schluss soll anzeigen ob die Eingabe korrekt ist oder nicht.

    Wenn man aber ein Label mit nur einem Icon macht(ohne Text) dann pickt es ganz oben.

    Gibt man aber text hinzu, ist es in der vertikal-Achse zentriert.

    Wieso ist das so. Und wie kann man es ändern?


    Edit: Kann es am Layout liegen?

    Hier der Code vom Layout:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    
    groupLayout.setHorizontalGroup(groupLayout.createSequentialGroup()
                                                      .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
                                                                           .addComponent(datum_Label)
                                                                           .addComponent(usPreis_Label)
                                                                           .addComponent(euroPreis_Label)
                                                                           .addComponent(bestellteMenge_Label))
                                                      .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
                                                                           .addComponent(datum_Input, inputFieldWidth,
                                                                                         inputFieldWidth, inputFieldWidth)
                                                                           .addComponent(usPreis_Input)
                                                                           .addComponent(euroPreis_Input)
                                                                           .addComponent(bestellteMenge_Input))
                                                      .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
                                                                           .addComponent(datum_Error)
                                                                           .addComponent(usPreis_Error)
                                                                           .addComponent(euroPreis_Error)
                                                                           .addComponent(bestellteMenge_Error)
                                                      )
                       );
     
            groupLayout.setVerticalGroup(groupLayout.createSequentialGroup()
                                                    .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                                                         .addComponent(datum_Label)
                                                                         .addComponent(datum_Input)
                                                                         .addComponent(datum_Error))
                                                    .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                                                         .addComponent(usPreis_Label)
                                                                         .addComponent(usPreis_Input)
                                                                         .addComponent(usPreis_Error))
                                                    .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                                                         .addComponent(euroPreis_Label)
                                                                         .addComponent(euroPreis_Input)
                                                                         .addComponent(euroPreis_Error))
                                                    .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                                                         .addComponent(bestellteMenge_Label)
                                                                         .addComponent(bestellteMenge_Input)
                                                                         .addComponent(bestellteMenge_Error))
                       );
     
            groupLayout.linkSize(SwingConstants.HORIZONTAL,
                                 datum_Label,
                                 usPreis_Label,
                                 euroPreis_Label,
                                 bestellteMenge_Label);
     
            groupLayout.linkSize(SwingConstants.HORIZONTAL,
                                 datum_Input,
                                 usPreis_Input,
                                 euroPreis_Input,
                                 bestellteMenge_Input);
    Angehängte Grafiken Angehängte Grafiken   
    Geändert von hesk (25.01.12 um 11:32 Uhr)
     

  6. #6
    hesk hesk ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    192
    Folgende Zeilen haben das erwünscht Ergebnis gebracht:

    Code java:
    1
    2
    3
    4
    
    groupLayout.linkSize(SwingConstants.VERTICAL, datum_Label, datum_Input, datum_Error);
    groupLayout.linkSize(SwingConstants.VERTICAL, usPreis_Label, usPreis_Input, usPreis_Error);
    groupLayout.linkSize(SwingConstants.VERTICAL, euroPreis_Label, euroPreis_Input, euroPreis_Error);
    groupLayout.linkSize(SwingConstants.VERTICAL, bestellteMenge_Label, bestellteMenge_Input, bestellteMenge_Error);
     

Ähnliche Themen

  1. JTextField
    Von Maddimini im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 26.04.10, 08:55
  2. JTextfield einstellungen
    Von ChrisHH1983 im Forum Java Grundlagen
    Antworten: 1
    Letzter Beitrag: 06.04.09, 09:39
  3. JTextField
    Von MariusMeier im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 9
    Letzter Beitrag: 15.03.08, 14:06
  4. JTextField
    Von dadon511 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 26.03.07, 16:56
  5. DnD JTree & JTextField
    Von flashOr im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 31.01.06, 12:35