Swing JTree

mauricem

Mitglied
Hallo @all,

derzeit versuche ich eine CD-Bibliothek zu implementieren. Diese Bibliothek soll in einem JTree wie folgt dargestellt werden:

"CD Bibliothek" (statisch)
|
---- Jazz (aus einem Array)
|
----- Connie Francis (Cd.interpret)
|
---- "A Garden In The Rain - 1959" (Cd.titel + " - "+ Cd.jahr)
|
---- Pop (aus einem Array)
|
---- Rock (aus einem Array)

Meine Cd hat also die Attribute Interpret, Genre, Jahr und Titel. Wenn ich den JTree erzeugen lasse, sollen also mehrere Knoten erzeugt werden.
1) Der statische Rootknoten ("CD Bibliothek")
2) Die Knoten mit den Genres aus einem festgelegten Array

Wenn ich eine neue CD anlege, soll der JTree um das jeweilige Element erweitert werden.

Hat jemand von Euch bereits so etwas gemacht?

Viele Grüsse
Maurice
 

mauricem

Mitglied
Hoi diggaa,

was ich nur wissen möchte ist, wie ich die Elemente meines Objekts nach Attributen hierarchisch im Tree einbinden kann. Wenn ich eine neue CD erzeuge, soll das Modell die View benachrichtigen und die wiederum den JTree aktualisieren. Allerdings habe ich keine Ahnung, was ich da machen soll. Habe den Quellcode zuhause und werde ihn noch nachliefern. Wenn Du mir erklären könntest, wie Du das Problem lösen würdest oder ein Beispiel gesehen hast, bei dem ein Objekt in ein TreeModel hierarchisch eingegliedert wird, dann immer her damit. Mit dem File-Beispiel konnte ich beispielsweise bisher nichts anfangen.

Wie bereits geschrieben muss zuerst eine CD aus der Liste einem statischen Genre untergeordnet werden. Danach muss ein Unterknoten erzeugt werden, der den Interpreten ausgibt. Daraunter dann ein Leaf mit allen weiteren Infos. Ich weiss nicht, wie man da die Hierarchie reinbringt.

Gruss
Maurice
 

mauricem

Mitglied
PHP:
"CD Bibliothek" (statisch)
         |
          ---- Jazz (aus dem Array "genres")
         |   |
                ----- Connie Francis (Cd.interpret)
         |          |
                      ---- "A Garden In The Rain - 1959" (Cd.titel + " - "+ Cd.jahr)
         |
          ---- Pop (aus dem Array "genres")
         |
          ---- Rock (aus dem Array "genres")

Damit man die Hierarchieebenen auch richtig sieht.
 
Zuletzt bearbeitet:

mauricem

Mitglied
Hier noch der Sourcecode...

Eine CD der Sammlung sieht wie folgt aus:

Java:
/** POJO fuer  CD 
 * 
 * @author BLeinfel
 *
 */
public class CdModel {

	int jahr;
	String kuenstler,titel,genre,produktionsland;

	public CdModel() {
		super();
	}
	
	public CdModel(int jahr, String kuenstler, String titel, String genre, String produktionsland) {
		super();
		this.jahr = jahr;
		this.kuenstler = kuenstler;
		this.titel = titel;
		this.genre = genre;
		this.produktionsland = produktionsland;
	}
	
	
	public int getJahr() {
		return jahr;
	}
	public void setJahr(int year) {
		this.jahr = year;
	}
	public String getKuenstler() {
		return kuenstler;
	}
	public void setKuenstler(String kuenstler) {
		this.kuenstler = kuenstler;
	}
	public String getTitel() {
		return titel;
	}
	public void setTitel(String titel) {
		this.titel = titel;
	}
	public String getGenre() {
		return genre;
	}
	public void setGenre(String genre) {
		this.genre = genre;
	}
	public String getProduktionsland() {
		return produktionsland;
	}
	public void setProduktionsland(String produktionsland) {
		this.produktionsland = produktionsland;
	}
	
	public int getKey() {
		return this.hashCode();
	}
	
	/** Diese Methode wird auch verwendet, um die CD in der GUI anzuzeigen (TextArea) */
	public String toString() {
		StringBuffer buf=new StringBuffer();
		buf.append(getKuenstler()).append(" ").append(getJahr()).
			append(" ").append(getTitel()).append(" ").append(getGenre()).
			append(" ").append(getProduktionsland());
		return buf.toString();
	}
	
}

Das Sammlungsmodell sieht so aus:

Java:
/** Diese Klasse repraesentiert das Modell fuer die Sammlung als ganzes und haelt eine Map von CDs. Die Als
 * Key wird der Hashwert der CD verwendet. 
 * 
 * @author BLeinfel
 *
 */
public class SammlungModel implements TreeModel{

	Map<Integer,CdModel> cdMap;
	String filter;
	List<SammlungListener> listener;
	
	
	public SammlungModel() {
		cdMap=new TreeMap<Integer,CdModel>();
		listener=new ArrayList<SammlungListener>();
	}
	
	
	/** Liefert eine Liste von CDs zurueck, die den aktuellen Filter beruecksichtigt.
	 * 
	 * @return Liste von CDs, gefiltert
	 */
	public Collection<CdModel> getCdList() {
		if (filter==null) return cdMap.values();
		else {
			List<CdModel> temp=new ArrayList<CdModel>();
			for (CdModel cd: cdMap.values()) {
				if (cd.toString().contains(filter) )
					temp.add(cd);
			}
			return temp;
		}
	}
	
	public void addCd(CdModel cd) {
		cdMap.put(cd.getKey(),cd);
		fireSammlungModelEvent();
	}
	
	public void removeCd(int key) {
		cdMap.remove(cdMap.get(key));
		fireSammlungModelEvent();
	}

	public String getFilter() {
		return filter;
	}

	public void setFilter(String filter) {
		this.filter = filter;
		fireSammlungModelEvent();
	}
	
	
	public void addSammlungListener(SammlungListener l) {
		listener.add(l);
	}
	
	public void removeSammlungListener(SammlungListener l) {
		listener.remove(l);
	}
	
	protected void fireSammlungModelEvent() {
		SammlungModelEvent evt=new SammlungModelEvent(this);
		evt.getSource().getClass();
		for (SammlungListener l: listener) {
			l.sammlungChanged(evt);
		}
	}


	@Override
	public void addTreeModelListener(TreeModelListener arg0) {
		// TODO Auto-generated method stub
		
	}


	@Override
	public Object getChild(Object parent, int index) {
		return "nichts";
	}


	@Override
	public int getChildCount(Object parent) 
	{
	      if (parent instanceof Map<?,?>)
	        return ((Map<Integer,CdModel>)parent).size();
	    return 0;
	}


	@Override
	public int getIndexOfChild(Object arg0, Object arg1) {
		// TODO Auto-generated method stub
		return 0;
	}


	@Override
	public Object getRoot() {
		// TODO Auto-generated method stub
		return null;
	}


	@Override
	public boolean isLeaf(Object arg0) {
		return (arg0 instanceof CdModel);
	}


	@Override
	public void removeTreeModelListener(TreeModelListener arg0) {
		// TODO Auto-generated method stub
		
	}


	@Override
	public void valueForPathChanged(TreePath arg0, Object arg1) {
		// TODO Auto-generated method stub
		
	}
	
}

Hier die View, die die Sammlung darstellen soll:

Java:
package ch.ffhs.pvanv.cd1.view;

import java.awt.BorderLayout;
import java.util.Collection;
import java.util.Iterator;

import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.event.TreeModelEvent;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;

import ch.ffhs.pvanv.cd1.control.SammlungController;
import ch.ffhs.pvanv.cd1.model.CdModel;
import ch.ffhs.pvanv.cd1.model.SammlungListener;
import ch.ffhs.pvanv.cd1.model.SammlungModel;
import ch.ffhs.pvanv.cd1.model.SammlungModelEvent;

/** 
 * Hauptklasse. Initialisiert die Anwendung und erzeugt die noetigen Objekte.
 * 
 * @author BLeinfel
 *
 */
public class CdSammlung extends JFrame implements SammlungListener {

	HeadPanel headPanel;
	//JTextArea content;
	JTree content;
	SammlungController scon;
	protected DefaultTreeModel treeModel;
	protected DefaultMutableTreeNode top = null;
	
	public CdSammlung(SammlungController scon) {
		super("CD Sammlung");
		this.top = new DefaultMutableTreeNode("CD Collection");
		 
		this.scon=scon;
		
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		
		headPanel=new HeadPanel(this);
		//content=new JTextArea();
		
		// 1) Erstelle eine Liste mit allen Genres
		String[] genres = NeueCdView.getGenres();
		for (int i=0; i<genres.length; i++)
		{
		  String genre = genres[i];
		  DefaultMutableTreeNode child = new DefaultMutableTreeNode(genre);
		  this.top.add(child);		  
		}
	    
	    //category = new DefaultMutableTreeNode("CD Collection");
	    //top.add(category);
	    
	    content = new JTree(top);
		content.setEditable(false);
	    
		setLayout(new BorderLayout());
		
		add(headPanel,BorderLayout.NORTH);
		add(content,BorderLayout.CENTER);
		
		setSize(600,700);
		setVisible(true);
		
	}
	
	
	/*public JTextArea getContent() {
		return content;
	}*/
	
	public JTree getContent() {
		return content;
	}
	
	public SammlungController getSammlungController() {
		return scon;
	}
	
	@Override
	public void sammlungChanged(SammlungModelEvent evt) {
		
		
		//content.setText(evt.getSource().toString());
		//((SammlungModel)evt.getSource()).getData();
		System.out.println("sammlung changes");
		SammlungModel model = ((SammlungModel)evt.getSource());
		model.getCdList();
		Collection<CdModel> cds = (Collection<CdModel>)((SammlungModel)evt.getSource()).getCdList();
		for(int i=0; i<this.top.getChildCount(); i++)
		{
			Iterator<CdModel> it = cds.iterator();
			while(it.hasNext())
			{
				CdModel cd = (CdModel)it.next();
				if((""+this.top.getChildAt(i)).equalsIgnoreCase(cd.getGenre()))
				{
					((DefaultMutableTreeNode)this.top.getChildAt(i)).
									add(new DefaultMutableTreeNode(cd.getKuenstler()));
				}	
			}
		}
		
		
		// 2) Für jede CD...
		//    ermittle Interpret und erstelle Knoten
		//    erstelle child knoten mit Titel und Jahr
		//    Ordne die CD einem Genre-Knoten zu
		// erstelle darin 
		
	    //original Tutorial
	    
		repaint();
		
	}
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		// erzeuge neues Datenmodell
		SammlungModel model=new SammlungModel();
		
		// erzeuge neuen controller mit Modell-Referenz
		SammlungController controller=new SammlungController(model);
		
		// erzeuge neue View mit Controller-Referenz
		CdSammlung mainView=new CdSammlung(controller);
		
		// die view soll ueber datenaenderungen informiert werden
		model.addSammlungListener(mainView);
		
		
		/* initialisier zum start mit demo daten */
		CdModel cd1=new CdModel(1995,"Michael Jackson","Bad","Pop","USA");
		CdModel cd2=new CdModel(1996,"Joe Cocker","Blafuzz","Pop","USA");
		CdModel cd3=new CdModel(1997,"Ronin","Strange stuff","Jazz","USA");
		CdModel cd4=new CdModel(1998,"Richard Wagner","Siegfried","Klassik","Germany");
		model.addCd(cd1);
		model.addCd(cd2);
		model.addCd(cd3);
		model.addCd(cd4);

	}


	//--------------------- LISTENERS ---------------------------------------------------------
	
    public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent, Object child) 
    {
 	  return addObject(parent, child, false);
	}
	
	public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,Object child,boolean shouldBeVisible) 
	{
	  DefaultMutableTreeNode childNode = 
	  new DefaultMutableTreeNode(child);
	
	  if (parent == null) {
	  parent = this.top;
	}
	
	//It is key to invoke this on the TreeModel, and NOT DefaultMutableTreeNode
	treeModel.insertNodeInto(childNode, parent, parent.getChildCount());
	
	//Make sure the user can see the lovely new node.
	//if (shouldBeVisible) {
	//  tree.scrollPathToVisible(new TreePath(childNode.getPath()));
	//}
	return childNode;
	}
	
	
	
	
	@Override
	public void treeNodesChanged(TreeModelEvent e) {
		// TODO Auto-generated method stub
		DefaultMutableTreeNode node;
        node = (DefaultMutableTreeNode)(e.getTreePath().getLastPathComponent());

        /*
         * If the event lists children, then the changed
         * node is the child of the node we've already
         * gotten.  Otherwise, the changed node and the
         * specified node are the same.
         */

            int index = e.getChildIndices()[0];
            node = (DefaultMutableTreeNode)(node.getChildAt(index));

        System.out.println("The user has finished editing the node.");
        System.out.println("New value: " + node.getUserObject());
	}


	@Override
	public void treeNodesInserted(TreeModelEvent e) {
		// TODO Auto-generated method stub
		System.out.println("a tree node was inserted");
	}


	@Override
	public void treeNodesRemoved(TreeModelEvent e) {
		// TODO Auto-generated method stub
		System.out.println("a node was removed");
	}


	@Override
	public void treeStructureChanged(TreeModelEvent e) {
		// TODO Auto-generated method stub
		System.out.println("the structure was changed");
		
	}



}

Hier die View, über die man eine neue CD erstellen können soll:

Java:
package ch.ffhs.pvanv.cd1.view;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.util.TreeMap;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import ch.ffhs.pvanv.cd1.control.NeueCdController;

/**
 * Dieser Frame erzeugt die View zum Anlegen einer neuen CD.
 * 
 * @author BLeinfel
 *
 */
public class NeueCdView extends JFrame {

	public static final String[] genres= {"Jazz","Klassik","Pop","Rock"}; 
	public static final String[] countries = {"Argentina","Belgium","Great Britain","Switzerland","USA"}; 
			
	TreeMap<String,JComponent> inputFields=new TreeMap<String,JComponent>();
	
	public static String[] getGenres()
	{
		return genres;
	}

	public static String[] getCountries()
	{
		return countries;
	}
	
	public NeueCdView(NeueCdController nacl) {
		
		super("Neue CD anlegen");
		
		nacl.setView(this);
		
		JPanel root=new JPanel(new BorderLayout());		
		

		JPanel form=new JPanel(new GridLayout(5,2));
		
		String s;
		JTextField tf;
		
		s="Kuenstler";
		form.add(new JLabel(s));
		tf=new JTextField("",10);
		form.add(tf);
		inputFields.put(s, tf);
		
		
		s="Titel";
		form.add(new JLabel(s));
		tf=new JTextField("",10);
		form.add(tf);
		inputFields.put(s, tf);
		
		s="Jahr";
		form.add(new JLabel(s));
		tf=new JTextField("",10);
		form.add(tf);
		inputFields.put(s, tf);
		
		s="Produktionsland";
		form.add(new JLabel(s));
		JComboBox countryCombobox=new JComboBox(countries);
		form.add(countryCombobox);
		inputFields.put(s, countryCombobox);
		
		form.add(new JLabel("Genre"));
		JComboBox genreCombobox=new JComboBox(genres);
		form.add(genreCombobox);
		inputFields.put("Genre",genreCombobox);
		
		root.add(form,BorderLayout.CENTER);
		
		JPanel footer=new JPanel(new GridLayout(1,2,10,10));
		
		JButton ok=new JButton("OK");
		ok.setName("OK");
		
		JButton abbr=new JButton("Abbrechen");
		// wichtig, da wir im Listener später getComponent
		// mit diesem Namen aufrufen müssen
		abbr.setName("Abbrechen");

		ok.addActionListener(nacl);
		abbr.addActionListener(nacl);
		
		footer.add(ok);
		footer.add(abbr);
		
		root.add(footer,BorderLayout.SOUTH);
		
		add(root);
		
		setSize(400,200);
		
		setVisible(true);
		
		
	}
	
	
	public JComponent getComponent(String k) {
		return inputFields.get(k);
	}
	
}

Mir ist noch nicht ganz klar, wie ich nun von hier aus zu einer Lösung kommen kann. Irgendwie muss ich das TreeModel implementiert bekommen, sodass es die View informiert, wenn sich etwas an ihm ändert.

Danke im Voraus für Eure Hilfe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
FrittenFritze JTree, LazyLoading und "Rückwärtstraversion" AWT, Swing, JavaFX & SWT 3
J Falsches Rendern durch JCheckBox in eigenem JTree AWT, Swing, JavaFX & SWT 6
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
F Jtree aus Klasse mit Arraylisten AWT, Swing, JavaFX & SWT 1
A Swing JList zu JTree AWT, Swing, JavaFX & SWT 11
richis-fragen JTree +/- verschwidet wenn Knoten keine Kinder hat... AWT, Swing, JavaFX & SWT 6
RalleYTN Modaler Dialog und JTree Node mit sehr... seeeeehr vielen Elementen AWT, Swing, JavaFX & SWT 6
Z Swing JTree DefaultMultipleTreeNode Repräsentation ändern AWT, Swing, JavaFX & SWT 1
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
W Swing Anzeigefehler bei JTree AWT, Swing, JavaFX & SWT 1
S Zwei JTree, ein Model, bei Selection im ersten JTree soll der zweite die Inhlate anzeigen AWT, Swing, JavaFX & SWT 2
S JRadioButton und JCheckBox im JTree AWT, Swing, JavaFX & SWT 14
H Swing JTree: Zählt der rootNode mit? AWT, Swing, JavaFX & SWT 2
krgewb Swing JTree - Farbe von nodes ändern AWT, Swing, JavaFX & SWT 4
R JTree behandeln AWT, Swing, JavaFX & SWT 2
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
U dynamisches JTree erstellen AWT, Swing, JavaFX & SWT 2
J JTree updaten AWT, Swing, JavaFX & SWT 2
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
T JTree mit Symbolen? AWT, Swing, JavaFX & SWT 8
R Anfängerfrage: Ansichten des JTree AWT, Swing, JavaFX & SWT 1
H Swing JTree Minimumgröße AWT, Swing, JavaFX & SWT 2
F Swing JTree + DiffUtils // Markierung Nodes aufheben AWT, Swing, JavaFX & SWT 2
I JTree wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Nodes in JTree nicht anzeigen AWT, Swing, JavaFX & SWT 0
T JTree mit Cloud verbinden AWT, Swing, JavaFX & SWT 0
H JTree Probleme AWT, Swing, JavaFX & SWT 9
F Swing Drag and Drop in JTree aus verschiedenen Listen AWT, Swing, JavaFX & SWT 6
M JButton wird von JTree überdeckt AWT, Swing, JavaFX & SWT 4
J Auf Dateien in JTree zugreifen AWT, Swing, JavaFX & SWT 15
F jTree.startEditingAtPath(path); funktioniert nicht bei eigenem CellEditor? AWT, Swing, JavaFX & SWT 8
D Swing JTree Steuerung AWT, Swing, JavaFX & SWT 11
S Swing JTree verwirrt mich AWT, Swing, JavaFX & SWT 2
T JTree - Elemente mit Doppelklick auswählen AWT, Swing, JavaFX & SWT 6
J JTree speichern AWT, Swing, JavaFX & SWT 4
N Swing JTree TreeCellRenderer mit html und automatischen Zeilenumbruch AWT, Swing, JavaFX & SWT 8
O Swing JTree um Label (oder Panel) erweitern AWT, Swing, JavaFX & SWT 9
T JTree, Knoten mehrmals verwenden AWT, Swing, JavaFX & SWT 5
B JTree mit Ordneransicht in JPanel einbinden AWT, Swing, JavaFX & SWT 4
D JTree node reagiert bei Klick nicht immer AWT, Swing, JavaFX & SWT 2
M Swing JTree: Wie kann ich die Hintergrundfarbe der selection ändern?!?! AWT, Swing, JavaFX & SWT 7
D Mehrmals auf Node im JTree klicken AWT, Swing, JavaFX & SWT 2
D JSplitPane, Jtree, CardLayout (constraint must be a string) AWT, Swing, JavaFX & SWT 9
N Swing FileFilter lässt JTree sich nicht öffnen AWT, Swing, JavaFX & SWT 2
X Swing 2 TreeModel und ein JTree synchronisieren AWT, Swing, JavaFX & SWT 3
N Swing JTree TreePath zu Windows Pfad? AWT, Swing, JavaFX & SWT 2
RELAXccc Swing JTree + JScrollPane, refresh Problem AWT, Swing, JavaFX & SWT 17
X Swing JTree aktualisieren AWT, Swing, JavaFX & SWT 2
V Swing JTree - Umbenennen selbst handlen. AWT, Swing, JavaFX & SWT 2
E Übergebenem JTree Blätter hinzufügen AWT, Swing, JavaFX & SWT 2
E Wert eines selektierten Knotens in einem JTree auslesen AWT, Swing, JavaFX & SWT 3
A Swing JTree - Nodes expanden AWT, Swing, JavaFX & SWT 2
D JTree nach Klick auf einen Hyperlink aktualisieren AWT, Swing, JavaFX & SWT 3
B JTree AWT, Swing, JavaFX & SWT 9
T Menüacceleratoren verschwinden bei JTree AWT, Swing, JavaFX & SWT 5
1 Swing JTree collapse child nodes AWT, Swing, JavaFX & SWT 4
B JTree - sehr individuell AWT, Swing, JavaFX & SWT 3
G Swing JTree - Verbindungslinien entfernen AWT, Swing, JavaFX & SWT 4
A Swing Herausfinden ob bei JTree Klick auf "+"/"-" anahnd x,y AWT, Swing, JavaFX & SWT 2
S Swing JTree und seine Listener... AWT, Swing, JavaFX & SWT 4
L Swing JTree wird nicht selektiert AWT, Swing, JavaFX & SWT 2
P [JTree] Markierhilfe der Drop-Location selber gestalten. AWT, Swing, JavaFX & SWT 4
A JTree aus Pfaden erzeugen AWT, Swing, JavaFX & SWT 3
K Swing Hilfe beim JTree! AWT, Swing, JavaFX & SWT 3
X Datensätze in JTree AWT, Swing, JavaFX & SWT 2
L Update JTree Verzeichnisse AWT, Swing, JavaFX & SWT 9
E JTree Auswahl AWT, Swing, JavaFX & SWT 2
K JTree width der Treenodes auf 100% AWT, Swing, JavaFX & SWT 6
C JTree LastSelectedPathComponent benutzen? AWT, Swing, JavaFX & SWT 3
S Swing JTree Node Text nicht richtig angezeigt AWT, Swing, JavaFX & SWT 2
Landei Swing JTree mit "Tabellenzeilen"? AWT, Swing, JavaFX & SWT 5
Rudolf Swing JTree Node anhand vom Namen finden AWT, Swing, JavaFX & SWT 4
S JTree Elemente nach BaumLevel abspeichern AWT, Swing, JavaFX & SWT 2
Z JTree rootChilds AWT, Swing, JavaFX & SWT 2
D JTree DefaultMutableTreeNode ActionPerformed AWT, Swing, JavaFX & SWT 3
T JTree Daten in DB schreiben am besten SQL AWT, Swing, JavaFX & SWT 21
O JTree/TreeModel/DefaultMutableTreeNodes thread safe machen AWT, Swing, JavaFX & SWT 3
J Lazy Loading eine JTree während Scrollen AWT, Swing, JavaFX & SWT 11
S JTree & JComboBox - Elemente übers Fenster hinaus anzeigen AWT, Swing, JavaFX & SWT 9
E Swing JTree AWT, Swing, JavaFX & SWT 2
J Swing Lazy Loading in JTree wenn gescrollt wird AWT, Swing, JavaFX & SWT 3
N Knotenanordnung in JTree AWT, Swing, JavaFX & SWT 4
S JTree mit Liste zur Speicherung AWT, Swing, JavaFX & SWT 3
S Jtree CheckNode mit JPanel AWT, Swing, JavaFX & SWT 32
G JTree entfernt Nodes nicht AWT, Swing, JavaFX & SWT 12
C Swing JTree und TreeModel AWT, Swing, JavaFX & SWT 15
S Swing JTree wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
J JTree AWT, Swing, JavaFX & SWT 2
R [JTree/DefaultTreeCellRenderer] eigenes Renderer-Panel, so breit wie der JTree AWT, Swing, JavaFX & SWT 2
S Swing JTree mit KeyListener AWT, Swing, JavaFX & SWT 2
E Swing JTree setSelectedPath funktioniert nicht?! AWT, Swing, JavaFX & SWT 5
E JTree Autoscroll bei Drag and Drop AWT, Swing, JavaFX & SWT 4
S JTree aus List<File> erstellen AWT, Swing, JavaFX & SWT 8
C Swing MouseEntered(?) für jeden Node im JTree AWT, Swing, JavaFX & SWT 4
M JTree mit eigenen Knoten - Zugriff auf Daten AWT, Swing, JavaFX & SWT 6
C Swing JTree UI Probleme AWT, Swing, JavaFX & SWT 6
G JTree - Observer oder Listener? AWT, Swing, JavaFX & SWT 6
L Swing [JTree] Selektierte Nodes nummerieren AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben