Button und Textfeld Darstellung

Doktor_DOOM

Mitglied
Hi,
ich habe wie folgend zu sehen im Bild eine GUI in JAVA gebaut.
  • Wie kann ich die Textfeld so anpassen das es auf der gleichen höhe und die gleiche größe wie der Button Reset, +, - ??
  • Des Weiteren hätte ich auch die Buttons Opensearch, Store Search und New Search gerne nebeneinander.
Erstellt habe ich diese Buttons & Textfeld wie folgt. Den Rahmen macht eine weitere Klassen.

Java:
  JTextField InputtextF = new JTextField(25);
  public static      JButton clearbutton = new JButton("new Search");
  public static      JButton storebutton = new JButton("store Search");
  public static      JButton openbutton = new JButton("open Search")

Java:
  public static JComponent getCenteredContainer(String title, JButton child0Button, JButton child1Button, JButton child2Button) {
    Box box = Box.createVerticalBox();
    box.setBorder(new TitledBorder(title));
    box.add(Box.createGlue());
    box.add(child0Button);
    box.add(child1Button);
    box.add(child2Button);
    box.add(Box.createGlue());
    return box;
  }


1677762487642.png
 
Welches Layout verwendest du für das Search-Panel? Verwende doch mal das gleiche wie für das Zoom-Panel.

Ansonsten: Kannst du mal eine Skizze (inklusive Tahmen) machen, wie du dir das vorstellst? Das Textfeld füllt aktuell die gesamte Höhe aus. Ich nehme an, dass das nicht der Fall sein soll, aber falls doch, dann versteh ich das mit der gleichen Höhe nicht.

"Gleiche Breite" wird etwas kniffliger. Es ist natürlich möglich, bei Größenordnung von "Zoom" auch "Search" anzupassen. Aber wo soll der restliche Platz hin? Welche Komponnte kriegt den?
 
Hi @Neumi5694,
das eine Problem mit den Buttons ist gelöst.

Zu deinen Fragen.
ich verwende das BorderLayout. Deine Annahme ist richtig. Das Textfeld sollte auf der Höhe und die gleiche größe wie die Buttons in der Zoom Box haben. Am ende sind das mehrere Boxen die von links nachts rechts hinzugefügt werden. Unten findest du den Code zur Zoom Box und für die Search Box. Selbst die setAlignmentY funktion hat keine Auswirkung.


Java:
  public static JComponent getCenteredContainer(String title, JComponent child) {
    Box box = Box.createVerticalBox();
    box.setBorder(new TitledBorder(title));
    box.add(Box.createGlue());
    box.add(child);
    box.add(Box.createGlue());
    return box;
  }
 
  public static JComponent getCenteredContainer(String title, JTextField childtext) {
        Box box = Box.createHorizontalBox();
        box.setBorder(new TitledBorder(title));
        box.add(Box.createGlue());
        childtext.setPreferredSize(new Dimension(85,10));
        childtext.setAlignmentY(Component.CENTER_ALIGNMENT);
        box.add(childtext);
        box.add(Box.createGlue());
        return box;
      }
 
Bei Borderlayout wird auf die Größe des Panels gezoomt, hier liegt dein Fehler.
Du solltest dich mal mit den verschiedenen Layouts beschäftigen.
die wichtigsten sind:
BorderLayout, FlowLayout, Gridlayout, Gridbaglayout, Boxlayout und CardLayout(Tabs ohne Titel).
Ich hab dir hier mal schnell was mit dem Netbeans Editor zusammengebastelt, siehe Anhang.
1677844432122.png

Grundsätzlich empfiehlt es sich aber nicht, dass 2 Panels (Zoom und Search) voneinander abhängig sind, das ist normalerweise ein Designfehler.

ps:
Mit Gridbaglayout kann man eigentlich fast alles machen, auch das, was die anderen Manager können. Die sind allerdings für spezielle Fälle optimiert und in diesen Fällen deutlich einfacher zu handhaben.

Null Layout und Absolute Layout sind für den Notfall, wenn sich der Inhalt auf keinen Fall verändern soll, auch nicht, wenn dadurch Texte abgeschnitten werden.
Mit OverlayLayout hab ich wenig Erfahrung, ist aber vielleicht mal ganz nützlich.
Lass die Finger von GroupLayout, das verusacht dir nur Kummer und Schmerzen.
 

Anhänge


Zurück
Oben