J'ai un JTree, et quand vous cliquez sur leafs, il change le modèle JTable et affiche une nouvelle table (un peu comme un système de messagerie). le problème se pose lorsque j'essaie de sélectionner les colonnes du nouveau modèle Table, cela donne toujours -1, quoi qu'il arrive. NOTE que cela fonctionne parfaitement pour le 1er modèle JTable, mais après la table modifiée,getSelectedColumn avec JTable ne fonctionne pas avec le changement de modèle
System.out.println(table.getSelectedColumn());
retourne toujours -1.
EDIT: bien, je ne sais pas quel extrait de code pour poster ici pour être honnête.
//constructor
public TreeSection() {
super();
//TREE
top = new DefaultMutableTreeNode("EMAIL");
createNodes(top);
//Create a tree that allows one selection at a time.
tree = new JTree(top);
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
//Listen for when the selection changes.
tree.addTreeSelectionListener(this);
//TABLE
tableModel = new MyTableModel();
table = new JTable(tableModel);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(true);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
selectionModel = table.getSelectionModel();
selectionModel.addListSelectionListener(this);
//SCROLL PANE
treeView = new JScrollPane(tree);
tableView = new JScrollPane(table);
//SPLIT PANE
splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
splitPane.setTopComponent(treeView);
splitPane.setBottomComponent(tableView);
splitPane.setDividerLocation(400);
splitPane.setPreferredSize(new Dimension(200, 700));
//Add the split pane to this panel.
panel.add(splitPane,BorderLayout.WEST);
}
/** Required by TreeSelectionListener interface. */
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
if (node == null) return;
Object nodeInfo = node.getUserObject();
if (node.isLeaf()) {
MailObject mObj = (MailObject)nodeInfo;
table.removeAll();
tableModel.setTableData(mObj.tableD);//changes tree model
table = new JTable(tableModel);
panel.repaint();
}
}
public void valueChanged(ListSelectionEvent event) {
// Get the data model for this table
//table.changeSelection(table.getSelectedColumn(), table.getSelectedRow(), false, false);
TableModel model = (TableModel)table.getModel();
System.out.println(table.getSelectedColumn());
}
im appelant getSelectedColumn sur une variable JTable qui est continuellement mise à jour avec le modèle modifié lorsque le JTree le modifie. Personnellement, je pense que c'est un problème d'écoute. Même si ive jonglé avec l'auditeur, il n'y avait pas d'amélioration. –
Mise à jour de la réponse après avoir regardé le code. – Jim
merci un million! tu as résolu mon problème! presque perdu 3 heures sur ce. –