Hi!
Habe nun auch mal wieder ein Problem.
Ich möchte gerne ein JTree mit Checkboxes haben, bei dem ich durch ein Array vorher festlegen kann, welche Checkboxes markiert sind. Und später, wenn ich bei einigen Checkboxes Haken gesetz habe und bei anderen sie entfernt habe, dann will ich auch auslesen können, an welcher Stelle die Häkchen nun sind.
Für Checkboxen im JTree (wo auch die normalen Icons im JTree erhalten bleiben) gibt es ein CheckBoxTree von Santhosh Kumar:
http://www.jroller.com/santhosh/date/20060611
https://myswing.dev.java.net/
Nur leider habe ich damit meine Probleme. Ich kann Checkboxen mit der Maus ein Häkchen versehen und wieder wegmachen. Doch auslesen, wo es sich befindet oder über ein Array automatisch bestimmte Teile selektieren geht bei mir irgendwie nicht.
Durch seinen Quellcode der Implemetierung vom CheckBoxTree, werde ich ehrlich gesagt auch nicht ganz schlau draus. Steig da nicht so durch.
Habe sein Beispielprogramm bisher schon mal hier hin geändert:
Was bei mir bisher funktioniert ist, daß ich Einträge der Reihe nach selektieren und deselektieren kann. Und die ausgewählten Eintrage stehen alle im treePaths-Array drin. Nur hat das, was in dem Array steht, rein garnichts mit den Checkboxen zu tun.
Kann mir da irgendjemand weiterhelfen?
Oder ist es in diesem Fall besser Santhosh direkt zu mailen/fragen?
Grüße
theuserbl
Habe nun auch mal wieder ein Problem.
Ich möchte gerne ein JTree mit Checkboxes haben, bei dem ich durch ein Array vorher festlegen kann, welche Checkboxes markiert sind. Und später, wenn ich bei einigen Checkboxes Haken gesetz habe und bei anderen sie entfernt habe, dann will ich auch auslesen können, an welcher Stelle die Häkchen nun sind.
Für Checkboxen im JTree (wo auch die normalen Icons im JTree erhalten bleiben) gibt es ein CheckBoxTree von Santhosh Kumar:
http://www.jroller.com/santhosh/date/20060611
https://myswing.dev.java.net/
Nur leider habe ich damit meine Probleme. Ich kann Checkboxen mit der Maus ein Häkchen versehen und wieder wegmachen. Doch auslesen, wo es sich befindet oder über ein Array automatisch bestimmte Teile selektieren geht bei mir irgendwie nicht.
Durch seinen Quellcode der Implemetierung vom CheckBoxTree, werde ich ehrlich gesagt auch nicht ganz schlau draus. Steig da nicht so durch.
Habe sein Beispielprogramm bisher schon mal hier hin geändert:
Java:
import skt.swing.tree.*;
import skt.swing.tree.check.*;
import javax.swing.*;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.awt.event.*;
public class CheckTreeDemo extends JFrame implements ActionListener {
JTree tree;
JButton buttonSel;
JButton buttonUnsel;
private CheckTreeSelectionModel selectionModel;
private CheckTreeDemo() {
super ("JTree with CheckBoxes");
tree = new JTree();
JScrollPane sc = new JScrollPane(tree);
CheckTreeManager checkTreeManager = new CheckTreeManager(tree, true, null);
selectionModel = new CheckTreeSelectionModel(tree.getModel(), true);
JSplitPane sp = new JSplitPane();
sp.setDividerLocation(130);
sp.setDividerSize(2);
buttonSel = new JButton("Aktivieren");
buttonSel.addActionListener(this);
buttonUnsel = new JButton("Deaktivieren");
buttonUnsel.addActionListener(this);
sp.setLeftComponent(buttonSel);
sp.setRightComponent(buttonUnsel);
setLayout(new BorderLayout());
add(sc, BorderLayout.CENTER);
add(sp, BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == buttonSel) {
TreePath path = tree.getSelectionPath();
System.out.println(path.toString());
// System.out.println(tree.getPathForRow(2));
// selectionModel.addSelectionPath(path);
//selectionModel.removeSelectionPath(path);
TreePath[] paths = new TreePath[1];
paths[0] = path;
selectionModel.addSelectionPaths(paths);
TreePath[] treePaths = selectionModel.getSelectionPaths();
if (treePaths != null) {
for (int i=0; i<=treePaths.length-1; i++) {
System.out.println("**"+treePaths[i]+"**");
}
} else {
System.out.println("****");
}
tree.treeDidChange();
tree.updateUI();
} else if (event.getSource() == buttonUnsel) {
TreePath path = tree.getSelectionPath();
System.out.println(path.toString());
TreePath[] paths = new TreePath[1];
paths[0] = path;
selectionModel.removeSelectionPaths(paths);
TreePath[] treePaths = selectionModel.getSelectionPaths();
if (treePaths != null) {
for (int i=0; i<=treePaths.length-1; i++) {
System.out.println("**"+treePaths[i]+"**");
}
} else {
System.out.println("****");
}
tree.treeDidChange();
tree.updateUI();
}
}
public static void main(String[] args){
CheckTreeDemo frame = new CheckTreeDemo();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 400);
frame.setVisible(true);
}
}
Was bei mir bisher funktioniert ist, daß ich Einträge der Reihe nach selektieren und deselektieren kann. Und die ausgewählten Eintrage stehen alle im treePaths-Array drin. Nur hat das, was in dem Array steht, rein garnichts mit den Checkboxen zu tun.
Kann mir da irgendjemand weiterhelfen?
Oder ist es in diesem Fall besser Santhosh direkt zu mailen/fragen?
Grüße
theuserbl