WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

uitree als struct abspeichern

 

Dennis4a1
Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2017, 16:57     Titel: uitree als struct abspeichern
  Antworten mit Zitat      
Hallo,
ich möchte ein GUI erstellen, in welchem der Nutzer ein struct definieren kann.
Hierfür bietet sich ja ein Baum an, dem nach belieben Knoten hinzugefügt und entfernt werden können.
Das ist soweit auch mit der undokumentieren Funktion uitree möglich.

Was mir jetzt noch fehlt ist, dass ich diese Struktur als struct in den workspace speichern kann.
Kennt da jemand eine Möglichkeit?

uitree_demo.m
 Beschreibung:

Download
 Dateiname:  uitree_demo.m
 Dateigröße:  2.23 KB
 Heruntergeladen:  204 mal
Private Nachricht senden Benutzer-Profile anzeigen


Dennis4a1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2017, 15:06     Titel:
  Antworten mit Zitat      
Bin leider immer noch nicht wirklich weiter.
Da uitree nicht richtig implementiert ist, muss man mit Java Class Objekten arbeiten.

Der Trick wäre es wohl, eine rekursive Funktion zu schreiben, den gesamten Baum unabhängig von seiner Größe bzw. Tiefe ausließt und Stück für Stück in ein Struct abspeichert.
Hat vllt mal jemand was ähnliches gemacht und kann mir Code zur Verfügung stellen? Zb um xml Datein auszulesen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.03.2017, 18:34     Titel: Re: uitree als struct abspeichern
  Antworten mit Zitat      
Hallo Dennis4a1,

Du kannst bei jedem Erstellen eines neuen Nodes das Struct glöeich mit updaten und z.B. in den UserData des uitree-Root-Objects speichern.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.03.2017, 19:33     Titel:
  Antworten mit Zitat      
Hallo,

wenn du nicht auf die Nested Functions angewiesen bist, gäbe es noch die Möglichkeit struct zu verwenden:
Code:
treeS = struct(tree)

Inwieweit eine Struktur dieser Form weiterhilft, kann ich nicht beurteilen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Dennis4a1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2017, 19:43     Titel:
  Antworten mit Zitat      
Moin,
danke für die Antworten. Die die Nested sind, habe ich mich entschieden die Idee umzuwerfen.
Jetzt stehe ich nur gerade vor der umgedrehten Herausforderung:
Ich will ein tree anhand eines structs erstellen:
'name'
'zeit'
'obst.banane'
'obst.apfel'
'obst.birne'
'gemuese.rettich'
'gemuese.kohl'
'gemuese.kartoffel'

Dafür gibts wohl auch keine Panentlösung, oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
huhu0815
Forum-Century

Forum-Century


Beiträge: 141
Anmeldedatum: 20.02.14
Wohnort: Dresden
Version: R2013b, R2014b, R2016b, R2018a
     Beitrag Verfasst am: 21.03.2017, 20:24     Titel:
  Antworten mit Zitat      
Hi,

schau mal hier oder hier

im ersteren wird der baum aus einem struct erzeugt.

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Dennis4a1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.03.2017, 23:56     Titel:
  Antworten mit Zitat      
huhu0815 hat Folgendes geschrieben:
schau mal hier oder hier

Danke, hab tatsächlich eine Funktion gefunden, die ich verwenden konnte: struct2tree!

Ein Problem noch: Ich möchte den Baum im nachhinein manuell manipulieren können, also noden hinzufügen oder löschen.

Das mach ich bisher (bei einem manuell erstellen Baum) so:
Code:
treeModel.insertNodeInto(childNode,parent,parent.getChildCount());


Dafür muss ich aber den treeModel neu definieren. Das mach ich so:
Code:
rootNode = tree.root.handle;
treeModel = DefaultTreeModel( rootNode );
tree.setModel( treeModel );

Zitat:
rootNode = javahandle.com.mathworks.hg.peer.UITreeNode


Da bekomme ich aber den Fehler "Undefined function or variable 'DefaultTreeModel'."

So funktionierts:
Code:
rootNode = uitreenode('v0','root', 'signals', [], 0);
treeModel = DefaultTreeModel( rootNode );


Kann jemand helfen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Dennis4a1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2017, 17:07     Titel:
  Antworten mit Zitat      
Noch bisschen rumprobiert, läuft!
Danke euch!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.