FlowLayout-Problem

Status
Nicht offen für weitere Antworten.

Ralf Ueberfuhr

Bekanntes Mitglied
Hallo,

ich komme immer noch nicht so recht mit den Layout-Managern zurecht. Ich habe folgende GUI:

screenshot1.jpg
screenshot1a.jpg



Die Combobox wird in der Höhe angepasst, wenn man das Fenster vergrößert oder verkleinert. Die Hyperlinks unten befinden sich auf einen Panel (pnlButtons) mit FlowLayout.

Mein Problem:
Wenn ich die Breite des Fensters ändere, dann verschwinden die Hyperlinks unten wegen dem Zeilenumbruch, der Panel wird nicht automatisch in der Höhe vergrößert, wie ich es gerne hätte (s. Bild). Wie kann ich das anstellen?

screenshot2.jpg


Der Vollständigkeit wegen hier noch der Auszug aus dem Konstruktor (des ContentPane), der für die Positionierung der Elemente zuständig ist (cbProjects ist die Combobox);

Code:
		final SpringLayout layout = new SpringLayout();
		setLayout(layout);
        add(cbProjects);
        
        /*
         * button panel
         */
        final JPanel pnlButtons = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 2));
        add(pnlButtons);
        pnlButtons.add(hlNewProject);
        pnlButtons.add(hlEditProject);
        pnlButtons.add(hlDeleteProject);
        
        /*
         * combobox
         */
        final DefaultDataComboBoxEditor editor = new DefaultDataComboBoxEditor(Project.class);
        cbProjects.setEditor(editor);
        cbProjects.setEnabled(false);
        cbProjects.setEditable(false);
        cbProjects.setRenderer(new ExtendableComboBoxRenderer(new DefaultDataCellRenderer()));
        cbProjects.setPrototypeDisplayValue(new Project());
        cbProjects.setBorder(
                BorderFactory.createCompoundBorder(
                        BorderFactory.createEmptyBorder(5,5,0,5), 
                        cbProjects.getBorder()
                )
        );
        model.setSelectedItem(Application.getSelectionModel().getSelectedObject(Project.class));

        /*
         * layout
         */
        layout.putConstraint(SpringLayout.EAST, pnlButtons, 0, SpringLayout.EAST, this);
        layout.putConstraint(SpringLayout.WEST, pnlButtons, 0, SpringLayout.WEST, this);
        layout.putConstraint(SpringLayout.SOUTH, pnlButtons, 0, SpringLayout.SOUTH, this);
        
        layout.putConstraint(SpringLayout.EAST, cbProjects, 0, SpringLayout.EAST, this);
        layout.putConstraint(SpringLayout.WEST, cbProjects, 0, SpringLayout.WEST, this);
        layout.putConstraint(SpringLayout.SOUTH, cbProjects, 0, SpringLayout.NORTH, pnlButtons);
        layout.putConstraint(SpringLayout.NORTH, cbProjects, 0, SpringLayout.NORTH, this);
 

Ralf Ueberfuhr

Bekanntes Mitglied
Also, da niemand antwortet, vermute ich, dass dieses Problem nicht mit den herkömmlichen Layoutmanagern lösbar ist. Ich habe daher den Umweg über die manuelle Berechnung der Höhe des Panels genommen:

Code:
    addComponentListener(new ComponentAdapter() {
        public void componentResized(ComponentEvent e) {

           final int width = getSize().width;

           final int minWidthFor2 = 
                    2*BUTTONS_HGAP
                 + hlNewProject.getPreferredSize().width
                 + hlEditProject.getPreferredSize().width;

           final int minWidthFor3 = 
                    minWidthFor2
                 + BUTTONS_HGAP
                 + hlDeleteProject.getPreferredSize().width;

           final int heightFor3 =
                    2*BUTTONS_VGAP
                 + Math.max(
                        hlNewProject.getPreferredSize().height,
                        Math.max(
                            hlEditProject.getPreferredSize().height,
                            hlDeleteProject.getPreferredSize().height
                        )
                    );

           final int heightFor2 =
                    3*BUTTONS_VGAP
                 + Math.max(
                        hlNewProject.getPreferredSize().height,
                        hlEditProject.getPreferredSize().height
                    )
                 + hlDeleteProject.getPreferredSize().height;

            final int heightFor1 = 
                    4*BUTTONS_VGAP
                 + hlNewProject.getPreferredSize().height
                 + hlEditProject.getPreferredSize().height
                 + hlDeleteProject.getPreferredSize().height;

            pnlButtons.setPreferredSize(new Dimension(pnlButtons.getPreferredSize().width,
                 /* calculate height */
                 (width < minWidthFor2 ? heightFor1 : (width<minWidthFor3 ? heightFor2 : heightFor3))
            ));
        }
    });
 

André Uhres

Top Contributor
masseur81 hat gesagt.:
..Wenn ich die Breite des Fensters ändere, dann verschwinden die Hyperlinks unten wegen dem Zeilenumbruch..
So verschwindet nichts mehr und nichts wird überdimensioniert:
Code:
/*
 * FramePack2.java
 */
//package schnipsel2;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FramePack2 extends JFrame {
    public FramePack2() {
        //JComponents erzeugen:
        comboBox = new JComboBox();
        btnPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        button1 = new JButton("button1");
        button2 = new JButton("button2");
        button3 = new JButton("button3");
        //Layout:
        comboBox.setModel(new DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        getContentPane().add(comboBox, BorderLayout.CENTER);
        btnPanel.add(button1);
        btnPanel.add(button2);
        btnPanel.add(button3);
        getContentPane().add(btnPanel, BorderLayout.SOUTH);
        //Listener:
        addComponentListener(new ComponentAdapter() {
            public void componentResized(ComponentEvent evt) {
                formComponentResized(evt);
            }
        });
        pack();
        setLocationRelativeTo(null);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }
    private void formComponentResized(ComponentEvent evt) {pack();}
    public static void main(String args[]) {new FramePack2().setVisible(true);}
    private JButton button1, button2, button3;
    private JComboBox comboBox;
    private JPanel btnPanel;
}
Du wirst jetzt sagen: "Das ist aber nicht so wie ich es wollte".
Sicher, aber du bist ja nicht allein auf der Welt.
 

Ralf Ueberfuhr

Bekanntes Mitglied
Da hast recht: Das ist nicht das, was ich wollte. :p

Mit diesen Sachen kann ich nichts anfangen, da ich diese Panels in Dockable-Fenster (vlDocking) platziere. Daher müssen sich die Komponenten nach dem Fenster richten, nicht umgekehrt.
 

Ralf Ueberfuhr

Bekanntes Mitglied
Hobbit_Im_Blutrausch hat gesagt.:
masseur81 hat gesagt.:
Scrollst du etwa deine Toolbuttons? ;-)

Nee, aber ich hab weiß ja nicht wie du es gerne hättest. Du hast ja nie erwähnt wie es am Ende aussehen soll :bahnhof:

masseur81 hat gesagt.:
der Panel wird nicht automatisch in der Höhe vergrößert, wie ich es gerne hätte (s. Bild)

Wer lesen kann, ist klar im Vorteil. :bae:
 

The_S

Top Contributor
Hm ok. Habsch überlesen (is aber auch schön versteckt ;) ) :oops: .

Aber du willst wirklich wenn der User dein Programm in der Breite verkleinert, es dafür in der Höhe vergrößern? Halt ich nicht gerade für schön. Da würde ich dann eher z. b. den Text ausblenden und nurnoch die Symbole anzeigen und/oder ab einer bestimmten größe einfach nicht weiter verkleinern lassen.
 

André Uhres

Top Contributor
masseur81 hat gesagt.:
..da ich diese Panels in Dockable-Fenster (vlDocking) platziere.
Daher müssen sich die Komponenten nach dem Fenster richten, nicht umgekehrt.
Ob ein Fenster dockable ist oder nicht hat normalerweise nichts mit dem Resizeverhalten am Hut.
Ausser bei einem internen Fenster, was bei dir nicht der Fall zu sein scheint.
 

Ralf Ueberfuhr

Bekanntes Mitglied
André Uhres hat gesagt.:
masseur81 hat gesagt.:
..da ich diese Panels in Dockable-Fenster (vlDocking) platziere.
Daher müssen sich die Komponenten nach dem Fenster richten, nicht umgekehrt.
Ob ein Fenster dockable ist oder nicht hat normalerweise nichts mit dem Resizeverhalten am Hut.
Ausser bei einem internen Fenster, was bei dir nicht der Fall zu sein scheint.

Na vielleicht hab ich mich zu ungenau ausgedrückt. Hier mal ein ScreenShot vom Einsatzort:

metristar.jpg
 

tini

Bekanntes Mitglied
also ich würde mich der meinung von hobbit anschließen und das fenster ab ner bestimmten größe nicht mehr verkleinern lassen, also ne minimumSize setzen.

sonst siehts irgendwann total besch... aus.
von mir aus evtl. noch text ausblenden, damit die toolbuttons in einer reihe bleiben, aber nur soweit verkleinern lassen, wie es nicht umbricht.

zur not dann noch was einbauen, dass man die linke seite ganz ausblenden kann.
 

Leroy42

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
BTW: Das ist ein verdammt geiles Look And Feel. Welches isn das?
:toll: Da stimme ich total mit dir überein, wollte ich die letzten Tage auch schon fragen,
hatte mich nur nicht getraut :oops:
 

Leroy42

Top Contributor
Danke aber bin ich jetzt zu blöde?

Ich finde zwar ein Haufen Beschreibungen aber keinen Download-Link des Jar-Files :autsch:

Wäre nett wenn ich's vor Büroschluß (ein paar Minuten) noch mitnehmen könnte :(
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Problem mit FlowLayout, JLabel und JButton AWT, Swing, JavaFX & SWT 4
M Problem mit jPanel (FlowLayout) in ScrollPane AWT, Swing, JavaFX & SWT 4
N Problem mit JScrollPane und JPane(FlowLayout) AWT, Swing, JavaFX & SWT 4
S toolbar - flowlayout problem AWT, Swing, JavaFX & SWT 5
frager2345 JTextLabel im Flowlayout verschieben AWT, Swing, JavaFX & SWT 4
A hilfe für flowlayout AWT, Swing, JavaFX & SWT 6
T Swing Größe einer Komponente in einem BoxLayout / FlowLayout festlegen AWT, Swing, JavaFX & SWT 7
P LayoutManager TextField.setSize(); in einem FlowLayout AWT, Swing, JavaFX & SWT 3
I BoxLayout, FlowLayout und Komponentengrößen AWT, Swing, JavaFX & SWT 1
R LayoutManager JSeparator in FlowLayout AWT, Swing, JavaFX & SWT 4
B FlowLayout Buttons verschieben? AWT, Swing, JavaFX & SWT 13
B Swing JScrollBar in einem JPanel mit FlowLayout AWT, Swing, JavaFX & SWT 15
M FlowLayout Alignment?! AWT, Swing, JavaFX & SWT 9
F AlignmentY bei FlowLayout AWT, Swing, JavaFX & SWT 8
P LayoutManager Komponenten einfügen (FlowLayout, BoxLayout) AWT, Swing, JavaFX & SWT 2
D Komponente im FlowLayout nicht mittig sondern rechts. Wie? AWT, Swing, JavaFX & SWT 4
C JPanel mit FlowLayout in JScrollPane - keinen Scrollbalken AWT, Swing, JavaFX & SWT 2
E LayoutManager FlowLayout mit angepassetr PreferedSize? AWT, Swing, JavaFX & SWT 3
aze FlowLayout:Lücken "schließen" AWT, Swing, JavaFX & SWT 2
O FlowLayout Button Event zuweisen? AWT, Swing, JavaFX & SWT 7
R FlowLayout: 1 Objekt pro Zeile AWT, Swing, JavaFX & SWT 5
N JTable in FlowLayout verweigert änderungen AWT, Swing, JavaFX & SWT 3
hdi FlowLayout Alternative AWT, Swing, JavaFX & SWT 10
0 Vertikales FlowLayout ? AWT, Swing, JavaFX & SWT 4
E Mysthische Punkte auf JFrame(FlowLayout) nach Komboboxklick AWT, Swing, JavaFX & SWT 5
D Toolbars und Zeilenumbruch (benutze FlowLayout) AWT, Swing, JavaFX & SWT 2
I Vertical FlowLayout AWT, Swing, JavaFX & SWT 1
G position im FlowLayout AWT, Swing, JavaFX & SWT 11
rgubler Umbrechendes Flowlayout AWT, Swing, JavaFX & SWT 2
O Zeilenumbruch erzwingen (FlowLayout? AWT, Swing, JavaFX & SWT 1
K FlowLayout AWT, Swing, JavaFX & SWT 2
F FlowLayout in BorderLayout AWT, Swing, JavaFX & SWT 4
B FlowLayout ausrichtung | "Wasserzeichen" im JFrame AWT, Swing, JavaFX & SWT 8
L LayoutManager ähnlich wie FlowLayout AWT, Swing, JavaFX & SWT 5
M FlowLayout in BorderLayout einbinden? AWT, Swing, JavaFX & SWT 6
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
S Layout - Problem AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
Umb3rus JavaFX Problem mit PropertyValueFactory: can not read from unreadable property AWT, Swing, JavaFX & SWT 1
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
G Instance OF Problem AWT, Swing, JavaFX & SWT 9
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
M Problem mit dem Anzeigen von Frames im Vordergrund AWT, Swing, JavaFX & SWT 5
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
JavaTalksToMe JavaFx ExekutorService Problem AWT, Swing, JavaFX & SWT 2
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
B Problem mit JavaFX AWT, Swing, JavaFX & SWT 5
J css Problem AWT, Swing, JavaFX & SWT 5
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
A Swing Filter-Problem AWT, Swing, JavaFX & SWT 1
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
L Java FX Problem mit Ubuntu 18 und JavaFx AWT, Swing, JavaFX & SWT 27
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
T DataBinding Problem AWT, Swing, JavaFX & SWT 5
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 15
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 0
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
T Swing Problem mit Datum und FormattedTextField AWT, Swing, JavaFX & SWT 2
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
olfibits JavaFX Problem mit HTMLEditor AWT, Swing, JavaFX & SWT 0
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
N Swing Problem mit loop AWT, Swing, JavaFX & SWT 2
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
S JLabel setText() Problem AWT, Swing, JavaFX & SWT 6
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
G Swing Splitpane Problem AWT, Swing, JavaFX & SWT 1
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
N JavaFX Stranges Problem mit der Autoscroll-Eigenschaft von Textareas AWT, Swing, JavaFX & SWT 0
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
J JavaFX Intersect Problem mit Shapes AWT, Swing, JavaFX & SWT 10
R JavaFX MediaPlayer AVI-Problem AWT, Swing, JavaFX & SWT 1
M Swing Problem mit ListCellRenderer AWT, Swing, JavaFX & SWT 7
D Problem mit JTable AWT, Swing, JavaFX & SWT 1
F GUI Auflösung ändern - Koordianten und Proportions Problem AWT, Swing, JavaFX & SWT 21
J Problem mit Button darstellung AWT, Swing, JavaFX & SWT 23
M Problem mit Layoutmanagern... Hilfe wäre sehr nett. AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Problem mit Variablen AWT, Swing, JavaFX & SWT 4
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
M Swing AttributiveCellTableModel addRow() Problem AWT, Swing, JavaFX & SWT 1
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben