Bonjour à tous,
Je me demandais si c'était possible de mettre 2 boutons dans une même cellule et d'utiliser renderer et editor?
Si oui, y a t'il un exemple quelque part?
Merci
Bonjour à tous,
Je me demandais si c'était possible de mettre 2 boutons dans une même cellule et d'utiliser renderer et editor?
Si oui, y a t'il un exemple quelque part?
Merci
Salut !
Mettre les deux boutons dans un panel, et le panel dans une cellule ?
peut-être que....
En faite je cherche à changer l'ordre d'affichage des lignes.
Les 2 boutons ont pour effet, soit de monté d'une ligne, soit de descendre d'une ligne.
Il y a peut être un autre moyen plus simple?
Je cherche a classer par l'ordre voulu, les lignes du tableau Jtable.
Mais en plus de classer les lignes du tableau, ça doit également modifier le champ ordre de la bdd.
Si vous avez d'autres idées!
Si vous avez des idées pour me permettre de modifier l'ordre d'affichage des lignes.
Il te suffit de créer un editor et un renderer contenant deux boutons dans un JPanel comme le suggère fraco...
Où est le problème
Puis pour la mise à jour de ta base de données, il suffit de t'appuyer sur un TableModelListener placé sur le modèle de ta JTable qui te permet d'être prévenu des toutes les modifications de ta JTable. (Bien sûr, toutes les échanges avec la base de données doivent être réalisés dans un Thread séparé histoire de ne pas bloquer l'interface).
Si tout ce que je dis ne te parle en rien, bah va falloir que tu retourne bouffer des tutos:
JTable: http://baptiste-wicht.developpez.com.../swing/jtable/
Interaction Swing/Threads: http://gfx.developpez.com/tutoriel/j...ing-threading/
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.
Merci pour vos réponses, j'ai pas eu le temps de regarder. Je vais m'y mettre.
Problème résolu
J'ai eu le temps de m'y remettre, j'ai regardé tous les tutoriels indiqué, je suis arrivé a la photo en pièce jointe.
J'ai donc bien 2 boutons dans un JPanel avec une photo a l'intérieur.
Le problème c'est que ce n'est pas cliquable. Et que les actions au click, ne retourne rien.
Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 PanelRenderer case_renderer = new PanelRenderer(); table2.getColumn("Ordre").setCellRenderer(case_renderer);//Affichage du bouton PanelEditor case_editor= new PanelEditor(new JCheckBox()); table2.getColumn("Ordre").setCellEditor(case_editor);//Lorsqu'on clique sur le bouton
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 public class PanelRenderer extends DefaultTableCellRenderer { private Icon fleche_haut; private Icon fleche_bas; private JButton bouton_bas=new JButton(); private JButton bouton_haut=new JButton(); private JPanel cel; private String bouton="competitions"; public PanelRenderer() { super(); fleche_haut = new ImageIcon("images/fleche_haut.gif"); fleche_bas = new ImageIcon("images/fleche_bas.gif"); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); Tableau_article_model table_model = (Tableau_article_model) table.getModel(); cel= new JPanel(); bouton_haut.setMargin(new Insets(1, 1, 1, 1)); bouton_bas.setMargin(new Insets(1, 1, 1, 1)); if(row==table_model.getRowCount()-1){ bouton_haut.setIcon(fleche_haut); cel.add(bouton_haut); } else if(row==0){ bouton_bas.setIcon(fleche_bas); cel.add(bouton_bas); } else { bouton_bas.setIcon(fleche_bas); cel.add(bouton_bas); bouton_haut.setIcon(fleche_haut); cel.add(bouton_haut); } return cel; } }
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 public class PanelEditor extends DefaultCellEditor { protected JButton button; private ButtonListener bListener = new ButtonListener(); public PanelEditor(JCheckBox checkBox) { super(checkBox); //On crée à nouveau notre bouton button = new JButton(); button.setOpaque(true); //On lui attribue un listener button.addActionListener(bListener); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { Tableau_article_model table_model = (Tableau_article_model) table.getModel(); button.setMargin(new Insets(1, 1, 1, 1)); return button; } } class ButtonListener implements ActionListener{ private int column; private int row; private JTable table; private int nbre = 0; private JButton button; private Datetime date; 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 JButton getButton(){return this.button;} public void actionPerformed(ActionEvent event) { this.button = ((JButton)event.getSource()); System.out.println("bouton action bas"); } }
Le problème est que je ne sais pas comment faire pour connaitre sur quels boutons l'action s'est produite dans PanelEditor.
Merci
Je sais que le problème vient de PanelEditor.
Mais je ne vois pas comment distinguer des 2 boutons ?
Si vous pouvez m’aiguiller!
Merci
Bon, j'ai passé 2 jours dessus, mais j'ai trouvé
Je donne les classes pour ceux a qui ça intéresse:
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 public class ButtonsComponent extends JPanel { private Icon fleche_haut; private Icon fleche_bas; private JButton bouton_bas=new JButton(); private JButton bouton_haut=new JButton(); public ButtonsComponent(){ fleche_haut = new ImageIcon("images/fleche_haut.gif"); fleche_bas = new ImageIcon("images/fleche_bas.gif"); bouton_haut.setMargin(new Insets(1, 1, 1, 1)); bouton_bas.setMargin(new Insets(1, 1, 1, 1)); bouton_haut.setIcon(fleche_haut); bouton_bas.setIcon(fleche_bas); add(bouton_haut); add(bouton_bas); } public JButton getBouton_bas() { return bouton_bas; } public void setBouton_bas(JButton bouton_bas) { this.bouton_bas = bouton_bas; } public JButton getBouton_haut() { return bouton_haut; } public void setBouton_haut(JButton bouton_haut) { this.bouton_haut = bouton_haut; } }
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 public class PanelRenderer extends DefaultTableCellRenderer { private ButtonsComponent feedComponent; public PanelRenderer() { super(); feedComponent = new ButtonsComponent(); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); Tableau_article_model table_model = (Tableau_article_model) table.getModel(); if(row==table_model.getRowCount()-1){ //on rend invisible le bouton bas feedComponent.getBouton_bas().setVisible(false); feedComponent.getBouton_haut().setVisible(true); } else if(row==0){ //on rend invisible le bouton haut feedComponent.getBouton_bas().setVisible(true); feedComponent.getBouton_haut().setVisible(false); } else { //on rend les boutons visibles feedComponent.getBouton_bas().setVisible(true); feedComponent.getBouton_haut().setVisible(true); } return feedComponent; } }Et enfin l'ajout dans le panel:
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 public class PanelEditor extends DefaultCellEditor { protected JButton button_haut; private ButtonListener_bas bListener_bas = new ButtonListener_bas(); private ButtonListener_haut bListener_haut = new ButtonListener_haut(); private ButtonsComponent feedComponent; private JButton button_bas; public PanelEditor(JCheckBox checkBox) { super(checkBox); //On crée à nouveau notre bouton feedComponent = new ButtonsComponent(); button_bas=feedComponent.getBouton_bas(); button_haut=feedComponent.getBouton_haut(); button_bas.setOpaque(true); button_haut.setOpaque(true); //On lui attribue un listener button_bas.addActionListener(bListener_bas); button_haut.addActionListener(bListener_haut); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { Tableau_article_model table_model = (Tableau_article_model) table.getModel(); if(row==table_model.getRowCount()-1){ //on rend invisible le bouton bas feedComponent.getBouton_bas().setVisible(false); feedComponent.getBouton_haut().setVisible(true); } else if(row==0){ //on rend invisible le bouton haut feedComponent.getBouton_bas().setVisible(true); feedComponent.getBouton_haut().setVisible(false); } else { //on rend les boutons visibles feedComponent.getBouton_bas().setVisible(true); feedComponent.getBouton_haut().setVisible(true); } return feedComponent; } } class ButtonListener_bas implements ActionListener{ private int column; private int row; private JTable table; private int nbre = 0; private JButton button; 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 JButton getButton(){return this.button;} public void actionPerformed(ActionEvent event) { this.button = ((JButton)event.getSource()); System.out.println("bouton action bas"); } } class ButtonListener_haut implements ActionListener{ private int column; private int row; private JTable table; private int nbre = 0; private JButton button; 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 JButton getButton(){return this.button;} public void actionPerformed(ActionEvent event) { this.button = ((JButton)event.getSource()); System.out.println("bouton action haut"); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 PanelRenderer case_renderer = new PanelRenderer(); table2.getColumn("Ordre").setCellRenderer(case_renderer);//Affichage du bouton PanelEditor case_editor= new PanelEditor(new JCheckBox()); table2.getColumn("Ordre").setCellEditor(case_editor);//Lorsqu'on clique sur le bouton
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager