Comment redimensionner un panel avec un Button en Java Swing?

comment redimensionner un panel avec un Button en java swing

Dans le code de la fonction du Jbutton ajouter cette ligne:

frame.setPreferredSize(new Dimension(350, 25);

Voici un exemple complet:

JButton b = new JButton("Mon Bouton");
b.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
        //lorsque le button est cliqué on redimensionne note frame
        frame.setPreferredSize(new Dimension(350, 25);
    }
});


1 « J'aime »

merci mais se que je cherche exactement c est :
1- ajouter un panel (ou le setLayout et nul)
2-ajouter deux bouton ( un bouton nome - et un autre +)
3- Lorsque j’appuie sur un bouton + , il grandit le panel
4- Lorsque j’appuie sur un bouton - , il minimise le panel

j’ai essaye mais ça na pas marcher

Jetez un coup d’oeil à ce code pour avoir quelques idées. Il peut changer la taille du JPanel en fonction du Jbutton cliqué.

Les points importants du code sont les suivants :

  • Définir une taille préférée sur le composant en question.
  • Obtenir une référence au conteneur de niveau supérieur.
  • Enfin, pack() le conteneur de niveau supérieur.
import java.awt.*;
import java.awt.event.ActionEvent;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class Test {
    private JPanel gui = new JPanel(new GridBagLayout());
    Action small = new AbstractAction("-") {

        @Override
        public void actionPerformed(ActionEvent e) {
            setSize(400, 100);
        }
    };
    Action large = new AbstractAction("+") {

        @Override
        public void actionPerformed(ActionEvent e) {
            setSize(600, 200);
        }
    };

    private final void setSize(int w, int h) {
        gui.setPreferredSize(new Dimension(w, h));
        Container c = gui.getTopLevelAncestor();
        if (c instanceof JFrame) {
            JFrame f = (JFrame) c;
            f.pack();
        }
    }

    Test() {
        JToolBar tb = new JToolBar("Size");
        for (Action action : getActions()) {
            tb.add(action);
        }
        gui.add(tb);

        gui.setPreferredSize(new Dimension(200, 100));
        gui.setBackground(Color.RED);
    }

    /*
     * @return the Actions
     */
    public Action[] getActions() {
        Action[] actions = {small, large};

        return actions;
    }

    /**
     * @return the gui
     */
    public JPanel getGui() {
        return gui;
    }

    public static void main(String[] args) {
        Runnable r = new Runnable() {

            @Override
            public void run() {
                Test gs = new Test();

                JFrame f = new JFrame("Demo");
                f.add(gs.getGui());
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                f.setLocationByPlatform(true);

                JMenuBar menuBar = new JMenuBar();
                f.setJMenuBar(menuBar);
                JMenu size = new JMenu("Size");
                menuBar.add(size);
                for (Action action : gs.getActions()) {
                    size.add(action);
                }
                f.pack();
                f.setVisible(true);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}

Résultat:

wwwwww