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 :
résultat attendu :
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); } }
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
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
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; } }
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 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; } }
Je n'arrive pas à distinguer ce que je dois mettre et où...
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); } }
Merci encore pour votre aide.
Partager