IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Frame avec JTable et fenêtre modale - détail sur clic bouton


Sujet :

Composants Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Frame avec JTable et fenêtre modale - détail sur clic bouton
    Je suis de nouveau bloquée sur un point et je m'y perds un peu entre toutes les classes disponibles. J'ai juste besoin qu'on me donne un exemple et après je me débrouillerai seule. En effet, je dois rendre mon devoir vendredi mais avec mon activité professionnelle la journée, j'ai peur de ne pas être dans les temps. Alors toute aide est précieuse pour moi et d'avance merci.

    Je dois à partir d'une frame ouvrir le détail d'une ligne dans une fenêtre modale :
    Nom : OCR_20150225_01.png
Affichages : 705
Taille : 33,1 Ko


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    package fr.ocr.ihm;
     
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
     
    import javax.swing.JButton;
    import javax.swing.JCheckBox;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.KeyStroke;
     
    import fr.ocr.ihm.listener.NewVehiculeListener;
    import fr.ocr.ihm.listener.ViewMenuListener;
    import fr.ocr.sql.DAOTableFactory;
    import fr.ocr.sql.DatabaseTable;
    import fr.ocr.sql.HsqldbConnection;
     
    public class Garage extends JFrame {
        private ViewDetailVehicule vDetail = new ViewDetailVehicule();
        //Les différents objets de notre IHM
        private JMenuBar bar = new JMenuBar();
        private JMenu menuVehicule = new JMenu("Vehicule");
        private JMenuItem menuVehiculeAjouter = new JMenuItem("Ajouter");
        private JMenuItem menuVehiculeVoir = new JMenuItem("Voir");
     
        private JMenu menuMarque = new JMenu("Marque");
        private JMenuItem menuMarqueVoir = new JMenuItem("Voir");
     
        private JMenu menuMoteur = new JMenu("Moteur");
        private JMenuItem menuMoteurVoir = new JMenuItem("Voir");
     
        private JMenu menuOption = new JMenu("Option");
        private JMenuItem menuOptionVoir = new JMenuItem("Voir");
     
        private JMenu menuTypemoteur = new JMenu("Type de moteur");
        private JMenuItem menuTypemoteurVoir = new JMenuItem("Voir");
     
        private JTable tableau;
        private JButton change = new JButton("Changer la taille");
        // Contenu de notre combo
        private String[] comboData = { "Très bien", "Bien", "Mal" };
     
        private JPanel contentPane = new JPanel();
     
        public Garage() {
     
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setTitle("JTable");
            this.setSize(800, 400);
            // Données de notre tableau
     
            this.getContentPane()
                    .add(new JScrollPane(DAOTableFactory.getTable(
                            HsqldbConnection.getInstance(), DatabaseTable.VEHICULE)),
                            BorderLayout.CENTER);
            this.setLocationRelativeTo(null);
            initMenu();
        }
     
        /**
         * Méthode qui initialise les points de menu
         */
        private void initMenu() {
            menuVehicule.add(menuVehiculeVoir);
            menuVehicule.add(menuVehiculeAjouter);
            menuVehiculeAjouter.addActionListener(new NewVehiculeListener(this));
            menuVehiculeAjouter.setAccelerator(KeyStroke.getKeyStroke(
                    KeyEvent.VK_A, KeyEvent.CTRL_MASK + KeyEvent.SHIFT_DOWN_MASK));
            menuVehiculeVoir.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
                    KeyEvent.CTRL_MASK + KeyEvent.SHIFT_DOWN_MASK));
            menuVehiculeVoir.addActionListener(new ViewMenuListener(this,
                    DatabaseTable.VEHICULE));
            menuVehicule.setMnemonic('v');
     
            menuMarque.add(menuMarqueVoir);
            menuMarque.setMnemonic('a');
            menuMarqueVoir.addActionListener(new ViewMenuListener(this,
                    DatabaseTable.MARQUE));
     
            menuMoteur.add(menuMoteurVoir);
            menuMoteur.setMnemonic('m');
            menuMoteurVoir.addActionListener(new ViewMenuListener(this,
                    DatabaseTable.MOTEUR));
     
            menuOption.add(menuOptionVoir);
            menuOption.setMnemonic('o');
            menuOptionVoir.addActionListener(new ViewMenuListener(this,
                    DatabaseTable.OPTION));
     
            menuTypemoteur.add(menuTypemoteurVoir);
            menuTypemoteur.setMnemonic('t');
            menuTypemoteurVoir.addActionListener(new ViewMenuListener(this,
                    DatabaseTable.TYPEMOTEUR));
     
            bar.add(menuVehicule);
            bar.add(menuMarque);
            bar.add(menuMoteur);
            bar.add(menuOption);
            bar.add(menuTypemoteur);
     
            this.setJMenuBar(bar);
        }
     
        public static void main(String[] args) {
            Garage g = new Garage();
            g.setVisible(true);
        }
    }
    résultat attendu :
    Nom : 8-detailVehicule.png
Affichages : 646
Taille : 40,9 Ko

    J'ai la classe ButtonListener


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    package fr.ocr.ihm.listener;
     
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JTable;
     
    //Notre listener pour le bouton
    public class ButtonListener implements ActionListener {
        protected int column, row, id;
        protected JTable table;
     
     
        public void setColumn(int col) {
            this.column = col;
        }
     
        public void setRow(int row) {
            this.row = row;
        }
     
        public void setTable(JTable table) {
            this.table = table;
        }
     
        public void actionPerformed(ActionEvent event) {
            /*
             
            Ici, il vous faut définir comment supprimer un véhicule
            et n'oubliez pas de supprimer toutes les options de ceui-ci...
             
            */
     
            if (event.getActionCommand().equals("DETAIL")){
     
     
            }
     
        }
    }


    la classe ButtonEditor


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    package fr.ocr.ihm;
     
    import java.awt.Component;
     
    import javax.swing.DefaultCellEditor;
    import javax.swing.JButton;
    import javax.swing.JCheckBox;
    import javax.swing.JTable;
     
    import fr.ocr.ihm.listener.ButtonListener;
    /**
     * Classe permettant de définir les comportements
     * des boutons du JTable
     * @author cysboy
     */
    public class ButtonEditor extends DefaultCellEditor {
     
        protected JButton button;
        private boolean isPushed;
        private ButtonListener bListener;
        private String title = "";
     
        // Constructeur avec une CheckBox
        public ButtonEditor(JCheckBox checkBox, String t) {
            // Par défaut, ce type d'objet travaille avec un JCheckBox
            super(checkBox);
            // On crée à nouveau un bouton
            button = new JButton();
            button.setOpaque(true);
            // On lui attribue un listener
            bListener = new ButtonListener();
            button.addActionListener(bListener);
            title = t;
        }
     
        public ButtonEditor(JCheckBox checkBox, String t, ButtonListener l) {
            // Par défaut, ce type d'objet travaille avec un JCheckBox
            super(checkBox);
            // On crée à nouveau un bouton
            button = new JButton();
            button.setOpaque(true);
            // On lui attribue un listener
            bListener = l;
            button.addActionListener(bListener);
            title = t;
        }
     
        public Component getTableCellEditorComponent(JTable table, Object value,
                boolean isSelected, int row, int column) {
            // On précise le numéro de ligne à notre listener
            bListener.setRow(row);
            // Idem pour le numéro de colonne
            bListener.setColumn(column);
            // On passe aussi le tableau en paramètre pour des actions potentielles
            bListener.setTable(table);
     
            // On réaffecte le libellé au bouton
            button.setText(title);
            // On renvoie le bouton
            return button;
        }
     
    }
    La classe ButtonRenderer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    package fr.ocr.ihm;
     
    import java.awt.Component;
     
    import javax.swing.JButton;
    import javax.swing.JTable;
    import javax.swing.table.TableCellRenderer;
     
    public class ButtonRenderer extends JButton implements TableCellRenderer {
     
        private String nom;
     
        public ButtonRenderer(String title) {
            nom = title;
        }
     
        public Component getTableCellRendererComponent(JTable table, Object value,
                boolean isSelected, boolean isFocus, int row, int col) {
            setText(nom);
            // On retourne notre bouton
            return this;
        }
    }
    et enfin ma fenêtre modale :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    package fr.ocr.ihm;
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.sql.Connection;
    import java.util.List;
     
    import javax.swing.BorderFactory;
    import javax.swing.Box;
    import javax.swing.JButton;
    import javax.swing.JCheckBox;
    import javax.swing.JComboBox;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
     
    import fr.ocr.sql.DAO;
    import fr.ocr.sql.HsqldbConnection;
    import fr.ocr.sql.MarqueDAO;
    import fr.ocr.sql.MoteurDAO;
    import fr.ocr.sql.OptionDAO;
    import fr.ocr.sql.TypeMoteurDAO;
    import voiture.Marque;
    import voiture.moteur.Moteur;
    import voiture.moteur.TypeMoteur;
    import voiture.option.Option;
     
    public class ViewDetailVehicule extends JDialog{
        /**
         *
         */
        private static final long serialVersionUID = 3154968070817172186L;
        private JTextField jNom, jMarque, jMoteur, jPrix,jOptions,jPrixTotal;
        private String nom, marque, moteur, prix,options,prixTotal;
     
        protected static final Connection conn =HsqldbConnection.getInstance();
     
        public ViewDetailVehicule(JFrame parent, String titre, boolean modal){
            super(parent, titre, modal);
            this.setSize(600,350);
            this.setLocationRelativeTo(null);
            this.setResizable(false);
            this.initComponent();
            this.setVisible(true);
            this.nom= nom;
     
     
        }
     
     
        public ViewDetailVehicule() {
            // TODO Auto-generated constructor stub
        }
     
     
        private void initComponent(){
            //nom du véhicule
            JPanel panNom = new JPanel();
            panNom.setBackground(Color.white);
            panNom.setPreferredSize(new Dimension(250,80));
            jNom = new JTextField(this.nom);
            jNom.setPreferredSize(new Dimension(100,25));
            panNom.setBorder(BorderFactory.createTitledBorder("Nom du véhicule"));
            panNom.add(jNom);
            //*********
     
     
            //*********
     
     
            Box b1 = Box.createHorizontalBox();
            b1.add(panNom);
     
     
     
            Box b6 = Box.createVerticalBox();
            b6.add(b1);
     
     
            this.getContentPane().add(b6);
     
     
     
     
     
        }
     
    }
    Je n'arrive pas à distinguer ce que je dois mettre et où...

    Merci encore pour votre aide.

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 200
    Points : 149
    Points
    149
    Par défaut
    Il suffit d'instancier la dialog dans le listener du bouton... et de faire un setVisible(true) sur la dialog (déjà fait dans le constructeur au passage...)

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/07/2015, 12h29
  2. Fermer une fenêtre en cliquant sur un bouton
    Par darkterreur dans le forum jQuery
    Réponses: 6
    Dernier message: 28/06/2012, 14h47
  3. Erreur avec Call() sur clic bouton
    Par ClaireDu45 dans le forum Composants graphiques
    Réponses: 22
    Dernier message: 08/02/2011, 18h35
  4. Réponses: 0
    Dernier message: 12/03/2010, 14h53
  5. Ouvrir une fenêtre en cliquant sur un bouton
    Par Versace31 dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 10/02/2009, 21h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo