Hallo,
ich möchte gern ein Menüsystem auf einem Panel darstellen. Der User soll dabei 2 verschiedene Möglichkeiten haben, einmal eine Flat-View und zum anderen eine Hierarchische Ansicht.
Für die hierarische Ansicht habe ich mir gedacht, dass ein JTree ganz nützlich wäre, da die Funktionen für das auf- und zuklappen bereits vorhanden sind. Nun habe ich dies auch soweit implementiert, dass es ganz nett ausschaut, jedoch habe ich ein Problem mit dem Auslösen eines Events.
Normalerweise nimmt man wohl den "TreeSelectionListener", welcher auf eine Veränderung der Selection wartet. Leider bietet er mir keine Möglichkeit abzufragen, ob evtl die SHIFT oder ALT Tasten dabei gedrückt wurden, kurzum, Modifers fehlen.
Nun dachte ich mir, ich kann einen JButton in die Liste bringen und diesem ein ActionListener mitgeben, der dann auf die Events reagiert. Nur leider wird der ActionListener gar nicht angesprochen.
Was kann ich tun, damit ich im JTree bei einer Auswahl abfragen kann, welche Modifers zusätzlich gedrückt wurden?
*Hintergrund
Je nach aktiviertem Modifer wird entweder das Programm gestartet (als Task), zwischen verschiedenen Tasks hin und her geswitched (wenn 2 mal der gleiche Task offen ist) oder aber nur Programminformationen angezeigt.
ich möchte gern ein Menüsystem auf einem Panel darstellen. Der User soll dabei 2 verschiedene Möglichkeiten haben, einmal eine Flat-View und zum anderen eine Hierarchische Ansicht.
Für die hierarische Ansicht habe ich mir gedacht, dass ein JTree ganz nützlich wäre, da die Funktionen für das auf- und zuklappen bereits vorhanden sind. Nun habe ich dies auch soweit implementiert, dass es ganz nett ausschaut, jedoch habe ich ein Problem mit dem Auslösen eines Events.
Normalerweise nimmt man wohl den "TreeSelectionListener", welcher auf eine Veränderung der Selection wartet. Leider bietet er mir keine Möglichkeit abzufragen, ob evtl die SHIFT oder ALT Tasten dabei gedrückt wurden, kurzum, Modifers fehlen.
Nun dachte ich mir, ich kann einen JButton in die Liste bringen und diesem ein ActionListener mitgeben, der dann auf die Events reagiert. Nur leider wird der ActionListener gar nicht angesprochen.
Was kann ich tun, damit ich im JTree bei einer Auswahl abfragen kann, welche Modifers zusätzlich gedrückt wurden?
*Hintergrund
Je nach aktiviertem Modifer wird entweder das Programm gestartet (als Task), zwischen verschiedenen Tasks hin und her geswitched (wenn 2 mal der gleiche Task offen ist) oder aber nur Programminformationen angezeigt.
Code:
class MPERenderer extends DefaultTreeCellRenderer {
public MPERenderer() {
setOpaque(true);
}
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
// Die Originalmethode die Standardeinstellungen machen lassen
super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf,
row, hasFocus);
// Den Wert des Knotens abfragen
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
Object inside = node.getUserObject();
if (leaf){
JButton bu = new JButton("Test");
bu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Hier ist das Event");
}
});
return bu;
}else{
setBackground(tree.getBackground());
setForeground(tree.getForeground());
return this;
}
}
}