Problem an Parent Element ranzukommen.

Status
Nicht offen für weitere Antworten.

dhachim

Bekanntes Mitglied
Also ich habe ein Problem welche ich nicht gelöst bekommen:

Ich habe ein JPanel panSheet
dieses Objekt verwende ich, um ein
Code:
DefaultMutableTreeNode dm = new DefaultMutableTreeNode(panSheet);
zu erzeugen. mit der Methode dm.getUserObject() bekomme ich ja mein Object panSheet wieder.

Soweit so gut. Nun lege ich ein weiteres Panel auf das panSheet. Nennen wir es: panElement.
Mit der Methode
Code:
search = panElement.getParent()
sollte ich doch eigentlich das Object panSheet wieder bekommen ? Oder bekomme ich nur eine NEUE Instanz des Panels ?

Warum Frage ich das ? Dieses panSheet habe ich in einen JTree gesetzt. Jetzt kommt in meiner Applikation ein neues Element(panElement) dazu. Ich möchte nun den passenden Knoten im Jtree dazu finden. Dazu durchsuche ich den Baum und versuche in der Schleife(rekursiv) durch den Baum
Code:
for (int i = 0; i < cc; i++) {
DefaultMutableTreeNode child = (DefaultMutableTreeNode) FormGen.oe.model.getChild(container, i);
if (child.getUserObject()== search) {
System.out.print("TRUE");
}
}
zu finden. Leider gelingt das nicht. Ich bekomme zwar den richtigen Typ zurück, aber die hashCodes unterscheiden sich. Das bedeutet doch, dass es nicht das selbe Object ist.

Hat nun jemand eine Ahnung, was ich falsch mache, oder wie ich dieses Problem lösen kann ?
 
G

Gast

Gast
dhachim hat gesagt.:
Nun lege ich ein weiteres Panel auf das panSheet. Nennen wir es: panElement.
Was bedeutet das genau. Ein kurzes compilierbares Bsp wäre nicht schlecht, bzw. eine Erläuterung was Du damit bezwecken willst.
 
S

SlaterB

Gast
es ist nicht klar, um was es geht,

gehts um eine GUI, um den Baum von JPanels hin zu angezeigten Komponenten?
was haben die DefaultMutableTreeNode damit zu tun?

wieviele unbekannte Zwischenschichten etwa zwischen JFrame und ContentPane oder JScrollPane und dessen View liegen,
kann man von außen gar nicht erkennen,

lasse dir alles von oben bis unten ausgeben, dann weißt du, was vorhanden ist,
sei es in der GUI oder in irgendeinem TreeNode-Baum, was auch immer der damit zu tun hat
 

dhachim

Bekanntes Mitglied
panSheet ist sozusagen mein Blatt Papier. Das Programm ist ein Grafikeditor.
Das weiter Panel ist ein JPanel, welches zum Beispiel ein Rechteck darstellt.

Ich zeichne sozusagen immer wieder neue Objekte auf mein Blatt. Auf diesem blatt kann man Elemente Gruppieren, wodurch eine Objekthierarchie entsteht. Diese möchte ich gerne in einem Jtree abbilden.


Mein Blatt Papier hat einen ContainerListener. Genau wie jeder weitere Container. In diesem Listener reagiere ich auf componentAdded(ContainerEvent e).

ich speichere hier dann die jweiligen Elemente in 2 Vectoren
Code:
	static Vector<Object> childs = new Vector<Object>();
	static Vector<Object> parents = new Vector<Object>();
unterschieden jeweils ob es ein Kind oder Elternelement ist.

Danach fange ich an zu sortieren. Wenn Elemente in parents-Vector Vorhanden sind, dann versuche ich es den Blatt Papier im Baum unterzuordnen und dort ihm seine Kinder zuzuordnen.
Mein Problem bei der Sache. Ich habe eigentlich keinen Einfluss darauf wie und ob das Programm die Elemente hinzufügt, so dass ich mich auf keine Reihenfolge verlassen kann. Also dachte ich mir, ich erzwinge mir meine eigene Reihenfolge und nutze die beiden Vectoren als Zwischenspeicher. Leider gelingt er mir nicht, das Blatt-Papier Objekt, mit dem ich ja einen Treenode generiert habe, im Tree wieder zu finden, um diesem dann ein weiteres kind zuzuordnen. Ich bekomme zwar ein Blatt-Papier Objekt, leider aber mit einem anderen hashcode und somit isses nicht gleich dem UserObject aus dem Treenode.

ich Frage mich, ist hier der Garbage Collector schneller als ich ? Denn ich erzeuge nie eine neue Instanz. oder erzeugt getParent() eine neue Objectinstanz ? Wenn ja wie kann ich anders an das Containerelement kommen ?
 

dhachim

Bekanntes Mitglied
Ich poste mal einen Teil des Codes.... lauffähig ist nicht möglich da das alles zu groß wird.

Die sortieren Methode:

Code:
public void sort() {

		for (int i = 0; i < parents.size(); i++) {
			Object obj=parents.get(i);
			Object hisParent= ((JPanel) obj).getParent();
	                
                      //Folgender Teil Funktioniert und passiert auch nur 1 mal.
                        DefaultMutableTreeNode dm = new DefaultMutableTreeNode(obj);
			if (obj instanceof GCSheet ) {
				FormGen.oe.model.insertNodeInto(dm, root,
						root.getChildCount());	
				parents.remove(obj);
				i++;
				break;
			}
		//found wird in SelectNode gesetzt. leider ist es IMMER False
			found=false;
			selectNode(FormGen.oe.root, hisParent); //hisparent sollte Anfangs auf jeden Fall GCSheet sein

			if (found){
				DefaultMutableTreeNode dmParent = (DefaultMutableTreeNode) FormGen.oe.tree
				.getLastSelectedPathComponent();
				
				FormGen.oe.model.insertNodeInto(dm, dmParent,
						dmParent.getChildCount());	
				parents.remove(obj);
				i++;				
			}
		}
			
//		 repaint ...
		FormGen.oe.expandAll(FormGen.oe.tree, false);
		FormGen.oe.expandAll(FormGen.oe.tree, true);
		
	}

Diese Methode dient zum finden eines Übergebenen Objektes in einem Baum. Es wählt bei Fund das Element aus.
Code:
	/**
	 * Wählt den Knoten/das Blatt im Tree aus, zu dem das Search Object gehört.
	 * Container ist zu Anfang das Root Element. Um den Index zu ermitteln,
	 * werden die Durchläufe gezählt.
	 * 
	 * @param container
	 * @param search
	 */
	public static void selectNode(Object container, Object search) {

		int cc;
		iTreeIndex++;
		cc = FormGen.oe.model.getChildCount(container);
		for (int i = 0; i < cc; i++) {
			DefaultMutableTreeNode child = (DefaultMutableTreeNode) FormGen.oe.model
					.getChild(container, i);
			System.out.println(child.getUserObject().hashCode()  + "         -        " + search.hashCode() );
			if (child.getUserObject().equals(search)) {
				TreePath path = new TreePath(child.getPath());
				FormGen.oe.tree.clearSelection();
				FormGen.oe.tree.addSelectionPath(path);
				FormGen.oe.tree.scrollPathToVisible(path);
				iTreeIndex = 0;
				found = true;
				break;
			} else {
				selectNode(child, search);
			}
		}

	}
 
S

SlaterB

Gast
hmm, das scheint mir etwas zu kompliziert, als dass ich es überblicke,
aber wenn du selber den Tree zu den Komponenten aufbaust, dann müsstest du doch die volle Kontrolle und den vollen Überblick darüber haben?

lasse dir vor jeder Änderung des Trees den alten kompletten Zustand und danach den neuen per Debug-Ausgabe anzeigen,

wenn neue Komponenten in der Graphic dazukommen, dann füge sie erstmals ein,
und später können sie doch nicht per Zauberhand verschwinden oder ersetzt werden?

hashCode() ist vielleicht nicht immer ein verläßliches Mittel, für Vectoren usw. kann der sich glaube ich ändern, hängt vom Inhalt ab,
vergib an alle beteiligten Objekte eine global eindeutige Id (alle Klassen überschreiben und neues Interface + Attribut hinzufügen),
falls du nicht weißt, wo in deinem Program Objekte herkommen/ sind/ verschwinden

genaueres kann ich leider bisher nicht erkennen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
S Layout - Problem AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
Umb3rus JavaFX Problem mit PropertyValueFactory: can not read from unreadable property AWT, Swing, JavaFX & SWT 1
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
G Instance OF Problem AWT, Swing, JavaFX & SWT 9
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
M Problem mit dem Anzeigen von Frames im Vordergrund AWT, Swing, JavaFX & SWT 5
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
JavaTalksToMe JavaFx ExekutorService Problem AWT, Swing, JavaFX & SWT 2
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
B Problem mit JavaFX AWT, Swing, JavaFX & SWT 5
J css Problem AWT, Swing, JavaFX & SWT 5
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
A Swing Filter-Problem AWT, Swing, JavaFX & SWT 1
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
L Java FX Problem mit Ubuntu 18 und JavaFx AWT, Swing, JavaFX & SWT 27
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
T DataBinding Problem AWT, Swing, JavaFX & SWT 5
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 15
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 0
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
T Swing Problem mit Datum und FormattedTextField AWT, Swing, JavaFX & SWT 2
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
olfibits JavaFX Problem mit HTMLEditor AWT, Swing, JavaFX & SWT 0
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
N Swing Problem mit loop AWT, Swing, JavaFX & SWT 2
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
S JLabel setText() Problem AWT, Swing, JavaFX & SWT 6
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
G Swing Splitpane Problem AWT, Swing, JavaFX & SWT 1
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
N JavaFX Stranges Problem mit der Autoscroll-Eigenschaft von Textareas AWT, Swing, JavaFX & SWT 0
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
J JavaFX Intersect Problem mit Shapes AWT, Swing, JavaFX & SWT 10
R JavaFX MediaPlayer AVI-Problem AWT, Swing, JavaFX & SWT 1
M Swing Problem mit ListCellRenderer AWT, Swing, JavaFX & SWT 7
D Problem mit JTable AWT, Swing, JavaFX & SWT 1
F GUI Auflösung ändern - Koordianten und Proportions Problem AWT, Swing, JavaFX & SWT 21
J Problem mit Button darstellung AWT, Swing, JavaFX & SWT 23
M Problem mit Layoutmanagern... Hilfe wäre sehr nett. AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Problem mit Variablen AWT, Swing, JavaFX & SWT 4
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
M Swing AttributiveCellTableModel addRow() Problem AWT, Swing, JavaFX & SWT 1
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5
K CheckBox Problem AWT, Swing, JavaFX & SWT 5
Grevak DisplayMode Problem seit Windows 10 AWT, Swing, JavaFX & SWT 2
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
B Swing Problem mit Bildpfad AWT, Swing, JavaFX & SWT 4
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
V Graphics g - drawOval problem mit background AWT, Swing, JavaFX & SWT 1
C AWT Problem mit Protokol Fenster AWT, Swing, JavaFX & SWT 0
M Swing pack() Problem mit Taskleiste AWT, Swing, JavaFX & SWT 4
N Swing Choice- Problem! AWT, Swing, JavaFX & SWT 8
Q "AWT-EventQueue-0" Exception Problem AWT, Swing, JavaFX & SWT 4
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
A Problem: repaint() - Schleife AWT, Swing, JavaFX & SWT 3
J Anfänger GUI Problem bei der Ausführung eines sehr einfachen Programms AWT, Swing, JavaFX & SWT 2
P AWT Problem mit Platzierung (GridBagLayout) AWT, Swing, JavaFX & SWT 2
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
A Mini-Menu-Schriften. Ein Problem bei hohen DPI Zahlen AWT, Swing, JavaFX & SWT 2
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
C Thread-/ Simulations- Problem AWT, Swing, JavaFX & SWT 18
G Swing Setvisible problem AWT, Swing, JavaFX & SWT 1
J JTabbedPane: close Button Problem AWT, Swing, JavaFX & SWT 2
Tom299 JavaFX -> fxmlLoader -> getResourceAsStream Problem AWT, Swing, JavaFX & SWT 1
T Problem: ComboBox und addItem AWT, Swing, JavaFX & SWT 5
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
T LayoutManager LookAndFeel-Problem AWT, Swing, JavaFX & SWT 4
F Problem mit Implementierung von Kollisionsabfrage AWT, Swing, JavaFX & SWT 5
vodkaz (javafx) Image Problem AWT, Swing, JavaFX & SWT 2
T Problem beim Zeichnen von Rechteck AWT, Swing, JavaFX & SWT 3
B JavaFX Problem bei Kamera / Group, gesamte Scene bewegt sich mit AWT, Swing, JavaFX & SWT 0
L Swing Vier Gewinnt Problem AWT, Swing, JavaFX & SWT 2
Z GUI-Problem, finde meinen Fehler nicht! AWT, Swing, JavaFX & SWT 11
B JavaFX KeyEvent und Canvas draw Problem AWT, Swing, JavaFX & SWT 9
R Swing Problem: IOException bei ActionListener AWT, Swing, JavaFX & SWT 1
GianaSisters JFrame mit JInternalFrames, Keylistener-Problem AWT, Swing, JavaFX & SWT 9
Q JList Update Problem AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben