comment définir la taille des composants à l'intérieur du contenant avec BoxLayout

Confrontés avec le problème de l'utilisation BoxLayout

Dans mon exemple, j'essaie de diminuer la hauteur de la zone de texte et modifiez la largeur des boutons (comme indiqué dans le marqueur vert sur l'image). Je connais les techniques de setPrefferedSize () et setMaximumSize (), mais il ne fonctionne pas comme il le devrait. La ligne add(Box.createHorizontalGlue ()) aussi n'a pas aidé.

Merci pour toute idée

public class Testy extends JPanel {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                constructGUI();
            }
        });
    }

    private static void constructGUI() {
        JFrame frame = new JFrame("Testy");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JPanel centerPanel = new JPanel();
        centerPanel.setBackground(Color.DARK_GRAY);
        centerPanel.setPreferredSize(new Dimension(100, 400));
        frame.add(centerPanel, BorderLayout.CENTER);

        Testy eastPanel = new Testy();
        frame.add(eastPanel, BorderLayout.EAST);

        frame.pack();
        frame.setVisible(true);
    }

    public Testy() {
        setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));

        JButton button = new JButton("Button ...... 1");
        //button.setPreferredSize(...);
        //button.setMaximumSize(...);
        add(button);

        button = new JButton("Button 2");
        //button.setPreferredSize(...);
        //button.setMaximumSize(...);
        add(button);

        button = new JButton("Button ........... 3");
        //button.setPreferredSize(...);
        //button.setMaximumSize(...);
        add(button);

        JLabel label = new JLabel("Label");
        //label.setPreferredSize(...);
        //label.setMaximumSize(...);
        add(label);

        JTextField textField = new JTextField();
        //textField.setPreferredSize(...);
        //textField.setMaximumSize(...);
        add(textField);

        button = new JButton("Button 4");
        //button.setPreferredSize(...);
        //button.setMaximumSize(...);
        add(button);

        //add(Box.createHorizontalGlue());
    }
}

comment définir la taille des composants à l'intérieur du contenant avec BoxLayout

Comme un remède rapide, vous pouvez imbriquer les mises en page, dans le sens, que sur le côté droit, créer un JPanel avec BorderLayout, mettre un JPanel(say centerPanel) à la CENTER et un JPanel(say buttonPanel) à PAGE_END emplacement. Utilisez maintenant une nouvelle JPanel(say compPanel) avec GridLayout et de mettre tous les composants, et placez ce compPanel à l'intérieur de centerPanel. Lieu JButton(button4) à l'intérieur de buttonPanel. Je suppose que cela va fonctionner 🙂
Pour mieux aider plus tôt, après une SSCCE. Un SSCCE devrait inclure des importations, d'une définition de classe & un main méthode.

OriginalL'auteur Dumas45 | 2013-08-23