Superposition de 2 JButton

honoredekouadio Messages postés 2 Date d'inscription dimanche 13 septembre 2015 Statut Membre Dernière intervention 14 septembre 2015 - 13 sept. 2015 à 10:43
honoredekouadio Messages postés 2 Date d'inscription dimanche 13 septembre 2015 Statut Membre Dernière intervention 14 septembre 2015 - 14 sept. 2015 à 00:30
Slt! je suis débutant en java et je développe en netbeans. Je voudrais savoir comment superposer 2 JButton 'Ajouter' et 'Enregistrer' de sorte qu'en cliquant sur ajouter, enregistrer soit actif et vice versa. Merci de votre collaboration

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
13 sept. 2015 à 11:18
Bonjour,

Un exemple :

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Test {

    public static void main(String[] args) {

        JFrame frame = new JFrame();
        frame.setSize(200, 200);
        frame.setLocationRelativeTo(null);
        frame.setLayout(null);

        JButton addBtn = new JButton("Ajouter");
        addBtn.setBounds(40, 30, 100, 30);
        frame.add(addBtn);

        JButton delBtn = new JButton("Supprimer");
        delBtn.setBounds(40, 80, 100, 30);
        frame.add(delBtn);

        // ------------------------------------------------
        addBtn.setEnabled(true);
        delBtn.setEnabled(false);

        addBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                addBtn.setEnabled(false);
                delBtn.setEnabled(true);
            }
        });

        delBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                addBtn.setEnabled(true);
                delBtn.setEnabled(false);
            }
        });
        // ------------------------------------------------

        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

Remarque : il y a pas mal de code à faire avec les setEnabled et permuter les true ou false et c'est facile de se tromper, on pourrait découper le code et faire un Listener qui gère la permutation.

Exemple :

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.AbstractButton;

public class SwitchEnabledListener implements ActionListener {

    private final Component comp1;
    private final Component comp2;
    private boolean state;

    private SwitchEnabledListener(Component comp1, Component comp2) {
        this.comp1 = comp1;
        this.comp2 = comp2;
        state = true;
        switchComponents();
    }

    private void switchComponents() {
        comp1.setEnabled(state);
        comp2.setEnabled(!state);
        state = !state;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        switchComponents();
    }

    public static void addSwitchEnabledListener(AbstractButton btn1, AbstractButton btn2) {
        ActionListener listener = new SwitchEnabledListener(btn1, btn2);
        btn1.addActionListener(listener);
        btn2.addActionListener(listener);
    }
}
import javax.swing.JButton;
import javax.swing.JFrame;

public class Test {

    public static void main(String[] args) {

        JFrame frame = new JFrame();
        frame.setSize(200, 200);
        frame.setLocationRelativeTo(null);
        frame.setLayout(null);

        JButton addBtn = new JButton("Ajouter");
        addBtn.setBounds(40, 30, 100, 30);
        frame.add(addBtn);

        JButton delBtn = new JButton("Supprimer");
        delBtn.setBounds(40, 80, 100, 30);
        frame.add(delBtn);

        // ------------------------------------------------
        SwitchEnabledListener.addSwitchEnabledListener(addBtn, delBtn);
        // ------------------------------------------------

        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
0
honoredekouadio Messages postés 2 Date d'inscription dimanche 13 septembre 2015 Statut Membre Dernière intervention 14 septembre 2015
14 sept. 2015 à 00:30
Merci Frangin,
j'apprécie le code. Je l'ai testé et je pense pouvoir en faire bon usage. Seulement j'aurais souhaité que les 2 boutons soient empilés l'un sur l'autre et non séparés.
0
Rejoignez-nous