so hier is mein neuer quellcode, wo ich bereits auf buttons reagieren kann, jedoch war es mir nicht möglich auch die roots mit buttons zu versehen und diese zu aktivieren, könntest du mir da bitte weiter helfen
import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.tree.*;
public class jtree
{
public static void main(String args[])
{
JFrame frame = new JFrame("CBM-Projekt");
JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
CBM Kassabuch[] = {
new CBM(" Kundeneintrag "),
new CBM(" Kunden Editieren "),
new CBM(" Kunden Löschen "),
new CBM(" Kunden Auflisten "),
new CBM(" Kunden Drucken ") };
CBM Kundenverwaltung[] = {
new CBM(" KB Eintrag "),
new CBM(" KB Editieren "),
new CBM(" KB Löschen "),
new CBM(" KB Auflisten "),
new CBM(" KB Drucken ") };
CBM Administrator[] = {
new CBM(" AD Einstellungen "),
new CBM(" AD Benutzer "),
new CBM(" AD Login/Logout "),
new CBM(" AD Informationen ")};
Vector KBVector = new NameVector("Kassabuch", Kassabuch);
Vector KVVector = new NameVector("Kundenverwaltung", Kundenverwaltung);
Vector ADVector = new NameVector("Administrator", Administrator);
Object rootNodes[] = { KBVector, KVVector, ADVector };
Vector rootVector = new NameVector("Root", rootNodes);
JTree tree = new JTree(rootVector);
TreeCellRenderer renderer = new CBMCellRenderer();
tree.setCellRenderer(renderer);
JScrollPane scroll = new JScrollPane(tree);
JPanel lblPanel = new JPanel();
lblPanel.add(new JLabel("Guten Tag Frau Fuchs!!"));
sp.setLeftComponent(scroll);
sp.setRightComponent(lblPanel);
Dimension minimumSize = new Dimension(500, 500);
scroll.setMinimumSize(minimumSize);
lblPanel.setMinimumSize(minimumSize);
sp.setDividerLocation(200);
sp.setPreferredSize(new Dimension(700, 500));
frame.getContentPane().add(sp);
frame.setSize(700, 500);
frame.setVisible(true);
}
}
class CBM
{
String title;
public CBM(String title)
{
this.title = title;
}
public String getTitle()
{
return title;
}
}
class CBMCellRenderer
implements TreeCellRenderer
{
String titel;
JLabel titleLabel;
JPanel renderer;
DefaultTreeCellRenderer defaultRenderer = new DefaultTreeCellRenderer();
Color backgroundSelectionColor;
Color backgroundNonSelectionColor;
private JButton button;
private String react;
public CBMCellRenderer()
{
renderer = new JPanel(new FlowLayout(FlowLayout.RIGHT,6,6));
titleLabel = new JLabel(" ");
titleLabel.setForeground(Color.blue);
button = new JButton();
renderer.add(button);
backgroundSelectionColor = defaultRenderer.getBackgroundSelectionColor();
backgroundNonSelectionColor = defaultRenderer.getBackgroundNonSelectionColor();
}
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus)
{
Component returnValue = null;
if ((value != null) && (value instanceof DefaultMutableTreeNode))
{
Object userObject = ((DefaultMutableTreeNode) value).getUserObject();
if (userObject instanceof CBM)
{
CBM book = (CBM) userObject;
button.setText(book.getTitle());
react=book.getTitle();
if (selected)
{
renderer.setBackground(backgroundSelectionColor);
//Hier kann jetzt auf die Buttons reagiert werden
if(react==" Kundeneintrag ")
{
System.out.println(""+react);
}else if(react==" Kunden Editieren ")
{
System.out.println(""+react);
}else if(react==" Kunden Löschen ")
{
System.out.println(""+react);
}else if(react==" Kunden Auflisten ")
{
System.out.println(""+react);
}else if(react==" Kunden Drucken ")
{
System.out.println(""+react);
}else if(react==" KB Eintrag ")
{
System.out.println(""+react);
}else if(react==" KB Editieren ")
{
System.out.println(""+react);
}else if(react==" KB Löschen ")
{
System.out.println(""+react);
}else if(react==" KB Auflisten ")
{
System.out.println(""+react);
}else if(react==" KB Drucken ")
{
System.out.println(""+react);
}else if(react==" AD Einstellungen ")
{
System.out.println(""+react);
}else if(react==" AD Benutzer ")
{
System.out.println(""+react);
}else if(react==" AD Login/Logout ")
{
System.out.println(""+react);
}else if(react==" AD Informationen ")
{
System.out.println(""+react);
}
}
else
{
renderer.setBackground(backgroundNonSelectionColor);
}
renderer.setEnabled(tree.isEnabled());
returnValue = renderer;
}
}
if (returnValue == null)
{
returnValue = defaultRenderer.getTreeCellRendererComponent(tree,value, selected, expanded, leaf, row, hasFocus);
}
return returnValue;
}
}
class NameVector
extends Vector
{
String name;
public NameVector(String name)
{
this.name = name;
}
public NameVector(String name, Object elements[])
{
this.name = name;
for (int i = 0, n = elements.length; i < n; i++)
{
add(elements);
}
}
public String toString()
{
return "[" + name + "]";
}
}