JTree und ein Button mit ActionListener

Status
Nicht offen für weitere Antworten.

Meru

Bekanntes Mitglied
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.

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;
		}
	}
}
 

Ebenius

Top Contributor
  1. Modifiers gibt's in nur in InputEvents, also MouseEvent und KeyEvent
  2. Eine lebendige Komponente kann man nicht in einem Renderer unterbringen, da der Renderer ausschließlich zum Zeichnen benutzt wird
Damit ergibt sich die Lösung: Hänge einen MouseListener an den JTree und hol Dir in diesem MouseListener den getroffenen Pfad vom Baum ab. Außerdem solltest Du noch darüber nachdenken, wie die Funktionalität auch mit der Tastatur ermöglicht werden kann (zum Beispiel CTRL+ENTER, oder ein Kontext-Menü, ein Button unter dem Baum, etc.).
 

Meru

Bekanntes Mitglied
Ah, vielen dank für die Information ^^. War mir bisher so nicht bewusst, da ich in einen JTable Renderer ja auch "lebendige" Objekte rein machen kann.
Na dann werde ich mal basteln ;)
 

Ebenius

Top Contributor
Meru hat gesagt.:
[...] da ich in einen JTable Renderer ja auch "lebendige" Objekte rein machen kann.
Nein. Genau das gleiche Prinzip: Die JTable nimmt die Komponente des Renderers, legt sie auf die Tabelle, zeichnet und nimmt die Komponente wieder weg. Lebendig (im Sinn von: der User kann was anklicken) wird eine Renderer-Komponente eben nicht.

Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
F Jtree kürzt Namen auf ... Java Basics - Anfänger-Themen 4
H Collections JTree remove zeigt keinen Effekt! Java Basics - Anfänger-Themen 8
H Best Practice Wo wird der rootNode eines JTree gespeichert... Java Basics - Anfänger-Themen 0
H Erste Schritte JTree: Instanzen einer Klasse speichern oder Namen/Strings... Java Basics - Anfänger-Themen 4
R JTree bewegen Java Basics - Anfänger-Themen 6
I JTree, Root-Name ändern Java Basics - Anfänger-Themen 4
N Dynamisch JTree erstellen Java Basics - Anfänger-Themen 3
G bestimmte dateiendungen in jtree rausfiltern Java Basics - Anfänger-Themen 7
P JTree aus txt Java Basics - Anfänger-Themen 8
M Warum wird mein Icon bei den JTree Nodes nicht angezeigt? Java Basics - Anfänger-Themen 7
JStickman JTree, JScrollPane, Liste mit graphischer Suchleiste - Dateimanager Java Basics - Anfänger-Themen 10
M JTree + JTab Java Basics - Anfänger-Themen 3
T JTree füllen Java Basics - Anfänger-Themen 3
B JTree knoten wird nicht übernommen Java Basics - Anfänger-Themen 4
S JTree Hilfe Java Basics - Anfänger-Themen 6
P Jtree MouseListener und NoCollapse Java Basics - Anfänger-Themen 2
M JTree ohne root anzeigen Java Basics - Anfänger-Themen 5
F JTree mit JSpinner Java Basics - Anfänger-Themen 2
I Liste von Dateien anzeigen/JTree Java Basics - Anfänger-Themen 4
G Zugriff auf JTree-Objekt Java Basics - Anfänger-Themen 2
K Problem: JTree mit integrierten JCheckboxen Java Basics - Anfänger-Themen 5
B OOP Jtree aus TreeMap<String, String[]> erstellen? Java Basics - Anfänger-Themen 6
D JTree ich dreh durch :D Java Basics - Anfänger-Themen 2
T JTree root setzten Java Basics - Anfänger-Themen 13
G xml Datei in JTree Java Basics - Anfänger-Themen 2
S JTree, Problem mit View Update Java Basics - Anfänger-Themen 2
R Problem mit JTree und JTable Java Basics - Anfänger-Themen 16
A JTree drucken Java Basics - Anfänger-Themen 2
G Verständnisproblem --> JTree Java Basics - Anfänger-Themen 6
G Filesystem in JTree anzeigen Java Basics - Anfänger-Themen 4
A Jtree Aufbau Java Basics - Anfänger-Themen 5
G JTree ilstener Java Basics - Anfänger-Themen 3
G JTree Java Basics - Anfänger-Themen 2
G Erstellten JTree aus einer XML-Datei akktualisieren Java Basics - Anfänger-Themen 11
S jTree initialisierung Java Basics - Anfänger-Themen 4
F Doppelklick-Event auf JTree Java Basics - Anfänger-Themen 5
J ArrayListen mit Name und Vater an JTree übergeben Java Basics - Anfänger-Themen 3
G aussehen vom jtree wiederherstellen Java Basics - Anfänger-Themen 3
P JTree mit mehreren Wurzeln Java Basics - Anfänger-Themen 2
G Umbenennen im JTree Java Basics - Anfänger-Themen 5
G rechter Mausklick im JTree Java Basics - Anfänger-Themen 2
G Bilder im jTree Java Basics - Anfänger-Themen 3
G jTree Pfad merken Java Basics - Anfänger-Themen 2
S JTree aktualisieren Java Basics - Anfänger-Themen 4
M JTree aktualisieren Java Basics - Anfänger-Themen 3
E JTree - Element suchen Java Basics - Anfänger-Themen 5
G JTree Problem. Java Basics - Anfänger-Themen 5
G JTree Java Basics - Anfänger-Themen 2
E JTree - Verzeichnisbaum Java Basics - Anfänger-Themen 3
G JTree Frage Java Basics - Anfänger-Themen 5
G Ebene von JTree ermitteln? Java Basics - Anfänger-Themen 6
G Icons für JTree skalieren? Java Basics - Anfänger-Themen 3
G Standard JTree ausblenden? Java Basics - Anfänger-Themen 5
B JTree mit Verzeichnissen füllen Java Basics - Anfänger-Themen 17
G Object vor reload von JTree merken und danach wieder setzen? Java Basics - Anfänger-Themen 5
P Wert aus JTree in ComboBox setzen? Java Basics - Anfänger-Themen 2
G Problem mit Refresh von JTree Java Basics - Anfänger-Themen 11
lomtas Scrollbalken für JTree Java Basics - Anfänger-Themen 3
lomtas JTree Struktur im Nachhinein ändern Java Basics - Anfänger-Themen 2
K JTree verlinken Java Basics - Anfänger-Themen 3
T ArrayList mit Dateien in die richtigen Ordner eines JTree Java Basics - Anfänger-Themen 16
K JTree aus DB rekursiv füllen Java Basics - Anfänger-Themen 12
M Dateisystem in Jtree - Ordnericon darstellen Java Basics - Anfänger-Themen 4
G JTree vollständigen pfad anzeigen Java Basics - Anfänger-Themen 11
R JTree aus einer ArrayList Java Basics - Anfänger-Themen 9
J JTree Bilder Java Basics - Anfänger-Themen 2
G JTree.TreeListener Java Basics - Anfänger-Themen 12
S JTree valueChanged() Ausgabe leider immer mit Pfadangabe! Java Basics - Anfänger-Themen 4
S JTree aktualisieren bzw. komplett neu aufbauen Java Basics - Anfänger-Themen 6
G Scrollen im JTree Java Basics - Anfänger-Themen 17
G Hintergrundsfarbe für JTree Java Basics - Anfänger-Themen 15
F JTree-Knoten (DefaultMutableTreeNode) formatieren ? Java Basics - Anfänger-Themen 3
Y JTree: ein Knoten als Objekt Java Basics - Anfänger-Themen 2
J JTable / JTree: Unsichtbare Elemente Java Basics - Anfänger-Themen 4
G JTree Explorer Problem mit listRoots() Java Basics - Anfänger-Themen 9
V Jtree: Alle Verzeichnisse und Ordner anzeigen, aber wie? Java Basics - Anfänger-Themen 2
Maxq Klassen Actionen in Button implementieren Java Basics - Anfänger-Themen 6
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
JavaBeginner22 Button Text verändern Java Basics - Anfänger-Themen 1
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
B Zurück Button erstellen Java Basics - Anfänger-Themen 1
Tom/S Button info Java Basics - Anfänger-Themen 2
I Exception bei Button mit wait() und notifyAll() Java Basics - Anfänger-Themen 3
T JSP, Button-Color change. Java Basics - Anfänger-Themen 1
L hilfe run button funktioniert nicht Java Basics - Anfänger-Themen 13
S Erste Schritte Button einen Wert zuweisen & diesen ausgeben Java Basics - Anfänger-Themen 2
S Counter Label Button Java Basics - Anfänger-Themen 4
J Button über Pfeiltasten bewegen Java Basics - Anfänger-Themen 8
J Button als Feld nutzen Java Basics - Anfänger-Themen 17
A JOPtionPaneOptionDialog Abfrage welcher Button gedrückt wurde? Java Basics - Anfänger-Themen 8
J JavaFX Label,Button zur Laufzeit Java Basics - Anfänger-Themen 30
B Button soll sowohl auf Klicken als auch auf die Enter-Taste reagieren Java Basics - Anfänger-Themen 9
S Klassenaufruf über JFrame Button Java Basics - Anfänger-Themen 3
G JTextField per Button speichern und an andere Klasse übergeben Java Basics - Anfänger-Themen 2
J Spiel mit Button klick starten Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben