2013-10-16 10 views
5

Wenn man eine inputdialog mit inputdlg und eine Standard-Antwort erzeugt, sieht es wie folgt aus:Wie voreinstellen Cursor oder Auswahl für Standardantwort in Eingabedialog

enter image description here

Welche Befehl Rückruf ich tun muss lass es so aussehen?

enter image description here

Die Dokumentation hier viel fehlt. Es ist eine Art "Luxus-Service" für den Kunden;) Aber ich denke, es wäre schön, wenn es einfach zu implementieren ist.


Diese Frage tatsächlich gelöst ist, wie ich, dass es wie uigetfile und uiputfile für meinen speziellen Fall praktische Funktionen sind herausgefunden. Aber der allgemeine Fall meiner Fragen bleibt ungelöst oder zumindest habe ich den Java-Ansatz nicht getestet.

Antwort

3

Ich fürchte, mit dem eingebauten inputdlg ohne Änderungen ist dies nicht möglich. Zumindest gibt es keine "versteckte" Funktion, die dies erlaubt.

Sie müssten zu diesem Zweck Zugriff auf das zugrunde liegende Java-TextField-Objekt haben. Sie könnten inputdlg an einen neuen Ort kopieren und Ihre eigene Version davon erstellen.

In Kombination mit dem findjobj Dienstprogramm ist die gewünschte Funktionalität im Prinzip vorhanden. http://www.mathworks.com/matlabcentral/fileexchange/14317-findjobj-find-java-handles-of-matlab-graphic-objects Dinge könnten diese dann wie folgt aussehen:

% create the edit-field: 
h = uicontrol('style', 'edit',...); 
% get the underlying java object 
% this should be a javahandle to a JTextField 
jtextfield = findjobj(h); 
% set start/end of the selection as desired: 
jtextfield.setSelectionStart(startPos); 
jtextfield.setSelectionEnd(endPos); 
+0

'inputdlg' scheint nicht„standalone“zu arbeiten, und ich kann die fehlende Funktion' getnicedialoglocation' nicht gefunden (schöner Name btw.). Es scheint jedoch ziemlich fummelig, nur ein bisschen mehr Funktionalität zu bekommen. Ich denke, es ist es nicht wert und ich werde es verschieben. Trotzdem danke! – thewaywewalk

+1

Sie finden diese Funktion in '/toolbox/matlab/uitools/private'. Aber Sie haben wahrscheinlich Recht, es ist nicht wirklich wert, wenn es nur ein "nice-to-have" ist ... – sebastian