Ich habe ein JTree, und wenn Sie auf Blätter klicken, ändert es das JTable-Modell und zeigt eine neue Tabelle an (ähnlich einem E-Mail-System). Das Problem tritt auf, wenn ich versuche, die Spalten des neuen Tabellenmodells zu wählen, es gibt immer -1, egal was. Beachten Sie, dass dies perfekt für das 1. JTable-Modell funktioniert, aber nach der geänderten TabelleGetSelectedColumn mit JTable funktioniert nicht mit wechselndem Modell
immer -1 zurückgibt.
EDIT: Nun, ich weiß nicht, welche Code-Schnipsel hier um ehrlich zu sein.
//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 Aufruf von getSelectedColumn auf einer JTable-Variable, die ständig mit dem geänderten Modell aktualisiert wird, wenn JTree es ändert. Ich persönlich fühle, dass es ein Hörerproblem ist. selbst als ich mit dem Zuhörer herumjongelte, gab es keine Besserung. –
Aktualisiert die Antwort nach dem Blick auf den Code. – Jim
danke eine million! Du hast mein Problem gelöst! fast 3 Stunden damit verschwendet. –