|
Laura2go |
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 25.02.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.03.2012, 15:16
Titel: Problem mit guidata()
|
|
Hallo,
ich habe mal wieder ein kleines Problem.
In meiner GUI wird über ein Button eine Funktion gestartet. Das klappt soweit auch, da ich in der Funktion über handles=guidata(gcf) auf meine Variablen zugreifen kann.
Jetzt habe ich in meiner GUI ein java Figure erstellt, das bei einem klick ebenfalls die selbe Funktion starten soll. Da gcf sich jetzt offensichtlich auf das java figure bezieht, kann ich nicht auf die handles Variablen meiner GUI zugreifen.
Ich habe über die Forensuche leider keine Lösung gefunden. Was muss in der Funktion statt handles=guidata(gcf) stehen? Ich hätte vermutet, dass dort handles=guidata(hObject) stehen muss. Leider hat das nicht funktioniert.
|
|
|
|
|
Marco H. |
Forum-Guru
|
|
Beiträge: 404
|
|
|
|
Anmeldedatum: 12.11.10
|
|
|
|
Wohnort: Dortmund
|
|
|
|
Version: 2010a/2012b
|
|
|
|
|
|
Verfasst am: 19.03.2012, 19:59
Titel:
|
|
Hey,
Zitat: |
Jetzt habe ich in meiner GUI ein java Figure erstellt
|
Was heist das genau? Du hast doch sicherlich ein Javaobjekt mit javacomponent in deiner figure platziert oder? Denn ein JFrame in einer Figure geht meines erachtens nicht.
Gibt es eine Fehlermeldung oder ist das handles Struct was du mit
einliest einfach nicht auf dem aktuellen Stand oder ist es leer weil du eine GUI ohne GUIDE geschrieben hast und du keine handles definiert hast? Ich glaube es wäre hilfreich, wenn du hier dein code oder den relevanten Bereich posten könntest.
Greetings
|
|
|
Laura2go |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 25.02.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.03.2012, 20:18
Titel:
|
|
Also ich versuche es mal die wichtigen Abschnitte zusammenzufassen:
Zunächst erzeuge ich meine Java Oberfläche mit:
Dann erzeuge ich eine Celle über eine Funktion einer definierten Klasse:
Die Callbacks habe ich so definiert, dass ich mit einem Rechtsklick auf die Celle folgende Funktion ausgeführt wird:
Die Funktion 'Information' aus der definierten Klasse gestartet.
Hier tritt nun das eigentliche Problem auf. Ich weiß nicht, wie ich statt handles=guidata(gcf) das figure handle angeben muss. Ich bekomme folgende Fehlermeldung:
... und ein leeres Figure Fenster öffnet sich. Wenn ich über ein Button die Funktion 'Information' der Klasse xxx starte, funktioniert alles einwandfrei.
|
|
|
Marco H. |
Forum-Guru
|
|
Beiträge: 404
|
|
|
|
Anmeldedatum: 12.11.10
|
|
|
|
Wohnort: Dortmund
|
|
|
|
Version: 2010a/2012b
|
|
|
|
|
|
Verfasst am: 19.03.2012, 21:19
Titel:
|
|
Hey,
mmhh du schreibst, dass du eine Klasse geschrieben hast? Also mit classdef in der du einige Parameter ablegst? Warum übergibst du dieser Klasse nicht auch dein Figure Handle als Propertie? Dann kannst du auch das gcf weglassen und z.B.
auslesen (Wenn Window der Propertiename ist).
gcf macht nicht mehr als die aktuell fokussierte Figure auszulesen, was unter umständen auch nicht so gut ist. Ich glaube das gleiche wie get(0,'CurrentFigure'). Wenn keine figure offen ist, dann erstellt gcf eine leere Figure, was erklären würde warum bei dir eine Fehlermeldung erzeugt wird und eine neue Figure geöffnet wird. Die Fehlermeldung besagt, dass deine handles kein Struct ist. Ich denke das es ist leer. Ich würde dir empfehlen die funktion Information mal zu debuggen. Dann müsstest du erkennen woran es liegt.
Greetings
|
|
|
Laura2go |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 25.02.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.03.2012, 22:01
Titel:
|
|
Hallo Marco,
ich bin mir nicht ganz sicher, ob ich dich richtig verstanden habe. Aber jetzt funktioniert es schon fast!
Ich habe eine definierte Klasse xxx mit der Property Window. Jetzt erstelle ich ein Objekt:
Jetzt habe ich in meinen methods drin:
Wenn ich die Funktion 'Information' start (a.Information) komme ich an meine Variablen:
Es funktioniert! Jetzt weiß ich nur nicht, was ich zum Schluss bei der Funktion 'Information' schreiben muss, damit die Daten aktualisiert werden. guidata(obj.Window,handles) geht nicht.
Zitat: |
guidata(object_handle,data) stores the variable data as GUI data. |
|
|
|
Marco H. |
Forum-Guru
|
|
Beiträge: 404
|
|
|
|
Anmeldedatum: 12.11.10
|
|
|
|
Wohnort: Dortmund
|
|
|
|
Version: 2010a/2012b
|
|
|
|
|
|
Verfasst am: 19.03.2012, 23:07
Titel:
|
|
Hey,
1. du kannst deiner Klasse xxx auch das figure handle direkt übergeben
Das macht gcf erstmal überflüssig. So mach ich es lieber, da man Matlab nicht die Möglichkeit gibt etwas zu machen was man nicht möchte (ist eindeutig).
Zitat: |
guidata(obj.Window,handles)
|
warum das nicht geht weiß ich gerade nicht genau, eigentlich muss das gehen. Versuch mal folgendes:
Kommt denn bei dir ne Warnmeldung oder ein Error? Leitest du deine Klasse xxx von der handle Klasse ab oder ist das ne Value Klasse?
Greetings
|
|
|
Laura2go |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 25.02.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.03.2012, 09:24
Titel:
|
|
Das ist die Lösung, vielen Dank!!!
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2025
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.
|
|