JTree Knoten deaktvieren bzw. aktivieren?

ohli

Grünschnabel
Ich habe einen JTree in dem ich Knoten bzw. Blätter einfügen, löschen, und umbenennen kann.Mein Problem ist, das ich einzelne Knoten/Blätter auf disabled bzw. enabled setzen möchte.Hat vielleicht jemand ne Idee, wie das funktionieren könnte?
Vielen Dank schonmal im voraus.
Gruß Ohli...

Quellcode:

package gui;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.border.*;

public class MenuTree extends JPanel implements ActionListener {

private static final long serialVersionUID = 1L;

private MainGUI mGUI;
private JTree tree;
private DefaultTreeModel treeModel;
private DefaultMutableTreeNode root;
private JScrollPane scr;
private Container cp;
private JPopupMenu popupmenu;

// Konstruktor
public MenuTree(MainGUI _mGUI) {
mGUI = _mGUI;
this.createNodes(root);
this.addElements();
this.setElementsBounds();
this.setBorder();
this.PopUpMenu();
this.setColor();

}

public void setMainWindowContentPane(Container cp) {
this.cp = cp;
}

// hier werden die Unterverzeichnisse + Dateien in den Stamm eingehängt
void createNodes(DefaultMutableTreeNode root) {
root = new DefaultMutableTreeNode("Hauptverzeichnis");

DefaultMutableTreeNode dir = null;
DefaultMutableTreeNode child = null;
DefaultMutableTreeNode subchild1 = null;
DefaultMutableTreeNode subchild2 = null;
DefaultMutableTreeNode subchild3 = null;
DefaultMutableTreeNode subchild4 = null;

dir = new DefaultMutableTreeNode("Roh-, Hilfs- und Betriebsstoffe");
root.add(dir);

dir = new DefaultMutableTreeNode("Software");
root.add(dir);

dir = new DefaultMutableTreeNode("Beteiligungen");
root.add(dir);



// create tree
treeModel = new DefaultTreeModel(root);
tree = new JTree(treeModel);

TreeSelectionModel tsm = new DefaultTreeSelectionModel();
tsm.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.setSelectionModel(tsm);
DefaultTreeCellRenderer treeRenderer = new MenuTreeCellRenderer();
tree.setCellRenderer(treeRenderer);

tree.setEditable(true);
tree.addMouseListener(mouseListener);
scr = new JScrollPane(tree, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
}

void addElements() {
this.add(scr);
}

// set Bounds of Elements
void setElementsBounds() {
this.setLayout(new java.awt.GridLayout(1, 2));

}

// Hintergrundfarbe des Baumes
void setColor() {
tree.setBackground(Color.lightGray);
}

// set Border of Panel
void setBorder() {
this.setBorder(new LineBorder(Color.black, 2));
}

// popupMenu erzeugen
void PopUpMenu() {
popupmenu = new JPopupMenu();
JMenuItem hinzufuegen = new JMenuItem("hinzufügen");
JMenuItem loeschen = new JMenuItem("löschen");
JMenuItem umbennenen = new JMenuItem("umbenennen");
JMenuItem ausblenden = new JMenuItem("ausblenden");
JMenuItem einblenden = new JMenuItem("einblenden");

// Items zu Actionlistener hinzufügen
hinzufuegen.addActionListener(this);
loeschen.addActionListener(this);
umbennenen.addActionListener(this);
ausblenden.addActionListener(this);
einblenden.addActionListener(this);

// Kontext wird zu Popupmenu zugefügt
popupmenu.add(hinzufuegen);
popupmenu.add(loeschen);
popupmenu.add(umbennenen);
//**************************
popupmenu.add(ausblenden);
popupmenu.add(einblenden);
//****************************
}

MouseListener mouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int selRow = tree.getRowForLocation(e.getX(), e.getY());
if (selRow != -1) {
TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
TreeNode node = (TreeNode) selPath.getLastPathComponent();

if (node.isLeaf()) {
// Blatt1 ist der BlattName im Baum

//TypAPanel
if ((selPath.getLastPathComponent().toString())
.equals("Roh-, Hilfs- und Betriebsstoffe")) {
mGUI.rightPanel.removeAll();
mGUI.rightPanel.add(mGUI.typAPanel);
mGUI.rightPanel.validate();
mGUI.rightPanel.repaint();
mGUI.rightPanel.revalidate();

}

//TypBPanel
if ((selPath.getLastPathComponent().toString())
.equals("Software")) {
mGUI.rightPanel.removeAll();
mGUI.rightPanel.add(mGUI.typBPanel);
mGUI.rightPanel.validate();
mGUI.rightPanel.repaint();
mGUI.rightPanel.revalidate();
}

//TypCPanel
if ((selPath.getLastPathComponent().toString())
.equals("Beteiligungen")) {
mGUI.rightPanel.removeAll();
mGUI.rightPanel.add(mGUI.typCPanel);
mGUI.rightPanel.validate();
mGUI.rightPanel.repaint();
mGUI.rightPanel.revalidate();
}

}
}

if (e.getButton() == MouseEvent.BUTTON3) {
popupmenu.show(tree, e.getX(), e.getY());
}
}
};

public void actionPerformed(ActionEvent event) {
String cmd = event.getActionCommand();
TreePath tp = tree.getLeadSelectionPath();
if (tp != null) {
DefaultMutableTreeNode node;
node = (DefaultMutableTreeNode) tp.getLastPathComponent();

if (cmd.equals("hinzufügen")) {
DefaultMutableTreeNode child;
child = new DefaultMutableTreeNode("Bitte Kontonamen angeben");
treeModel.insertNodeInto(child, node, node.getChildCount());
TreeNode[] path = treeModel.getPathToRoot(node);
tree.expandPath(new TreePath(path));
treeModel.nodeChanged(node);
}

else if (cmd.equals("löschen")) {

if (node != root) {
TreeNode parent = node.getParent();
TreeNode[] path = treeModel.getPathToRoot(parent);

// Exeption abfangen
try {
treeModel.removeNodeFromParent(node);
tree.setSelectionPath(new TreePath(path));
} catch (IllegalArgumentException iae) {
JOptionPane.showMessageDialog(null,
"Hauptverzeichnis kann nicht gelöscht werden");
}
treeModel.nodeChanged(node);
}
} else if (cmd.equals("umbenennen")) {

tree.startEditingAtPath(tree.getSelectionPath());
treeModel.nodeChanged(node);
}

else if(cmd.equals("ausblenden")){

}

else if(cmd.equals("einblenden")){

}
}
}

}
 
Zurück