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: