Event dans une Jtable avec colonne boolean
Résolu/Fermé
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
-
4 mai 2015 à 11:21
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 - 4 mai 2015 à 15:01
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 - 4 mai 2015 à 15:01
A voir également:
- Event dans une Jtable avec colonne boolean
- Déplacer une colonne excel - Guide
- Sport event 365 avis ✓ - Forum Consommation et internet
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Bureautique
- Figer une colonne excel - Guide
- Triez la liste comme sur cette illustration (attention, on ne voit que le début …). quel est le mot formé par les 6 dernières lettres de la colonne code ? - Forum Excel
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
4 mai 2015 à 12:51
4 mai 2015 à 12:51
Bonjour,
A priori un Listener sur la checkBox de la dixième ligne devrait suffire pour intercepter le changement et le répercuter sur la textBox à afficher.
A priori un Listener sur la checkBox de la dixième ligne devrait suffire pour intercepter le changement et le répercuter sur la textBox à afficher.
4 mai 2015 à 14:01
Le problème c'est que j'ai crée cette table via l'interface de l'IDE (Netbean). Et je n'arrive pas à trouvé le nom de la Checkbox, même en cherchant dans le code générer par l'IDE.
Je suis relativement nouveau en java. J'utilise Netbean pour crée mon projet.
Ça serait vraiment sympa une explication :)
Modifié par KX le 4/05/2015 à 14:33
À choisir, WindowBuilder d'Eclipse est mieux, il ne rajoute rien (sauf utilisation avancée) et en plus il est bidirectionnel, ce qui signifie que les modifications faites à la main dans le code sont visibles ensuite sur la partie graphique.
Mais pour un débutant, le mieux c'est encore de faire ça à la main.
Voici un exemple minimaliste (en pur Java) avec un PropertyChangeListener :
import java.awt.BorderLayout; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.JFrame; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; public class Test { public static void main(String[] args) { final String[] columns = { "Choix", "Valeur" }; final String[] texts = { "Tata", "Toto", "Autre" }; final int NB_ROWS = texts.length; final Object[][] datas = new Object[NB_ROWS][2]; for (int i = 0; i < NB_ROWS; i++) { datas[i][0] = false; datas[i][1] = texts[i]; } final JTable table = new JTable(new DefaultTableModel(datas, columns) { private static final long serialVersionUID = 1L; @Override public boolean isCellEditable(int row, int col) { return col == 0; } @Override public Class<?> getColumnClass(int col) { switch (col) { case 0: return Boolean.class; case 1: return String.class; default: return super.getColumnClass(col); } } }); final JTextField other = new JTextField("Précisez"); other.setEditable(false); table.addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { int row = table.getEditingRow(); int col = table.getEditingColumn(); if (row == -1 || col == -1) return; datas[row][col] = table.getValueAt(row, col); if (row == NB_ROWS - 1 && col == 0) other.setEditable((Boolean) datas[row][col]); } }); JFrame frame = new JFrame(); frame.add(table, BorderLayout.CENTER); frame.add(other, BorderLayout.SOUTH); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }4 mai 2015 à 14:56
Dans ce cas là je vais plutôt me lancer dans cette direction.
Merci beaucoup du conseil !
Bonne journée :)
PS:_ juste une dernière question :
à quoi sert le "frame.pack();" à la fin du code ? Merci
Modifié par KX le 4/05/2015 à 15:00
Ça permet de dimensionner la fenêtre à la taille des composants qui la contienne, c'est donc la plus petite taille possible de la fenêtre sans que ce soit cassé.
Plus d'info dans la documentation : Window.pack().
4 mai 2015 à 15:01
Vous me simplifiez la vie ;)