Ich fragte bereits auf Matlab Answers, aber habe keine Antwort dort, also versuche ich es hier.Right-Align-Werte in UITable in App Designer
Ich habe einige Zahlen, die ich in einem UITable zeigen möchte. Da ich eine spezielle Formatierung der Werte (drei Ziffern nach Komma, keine wissenschaftliche Notation) brauche, habe ich die Werte in Strings umgewandelt. Das Problem ist, dass diese Zeichenfolgen linksbündig sind, was nicht sehr gut aussieht.
Wenn uitable in GUIDE, war ich mit führenden Leerzeichen aufzufüllen Saiten der Lage, wie sie richtig ausgerichtet ist, sich in der folgenden
data = {'1532.000'; ' 5.543'; ' 26.457'};
ein Mono-Raum Schriftart verwenden, werden die Werte wie dies in der Tabelle gezeigt :
1532.000
5.543
26.457
Momentan überlege ich, zu App Designer zu wechseln. Ich benutze die gleichen Raum-gepolsterten Saiten, aber hier scheint die Eignung sie zu entfernen. Das ist das Ergebnis sieht wie folgt aus:
1532.000
5.543
26.457
Gibt es eine Möglichkeit uitable
in App Designer halten die Räume zu machen, wie es in GUIDE tat? Natürlich wäre es sogar besser, die Saiten direkt auszurichten, ohne dass ein Padding erforderlich ist, aber soweit ich weiß, ist dies nicht möglich.
Falls es darauf ankommt: Ich verwende Matlab R2016b.
Edit:
Minimal Beispiel für die Erzeugung und eine uitable füllen. Dies ist eine einfache AppDesigner GUI, wo ich nur eine Tabelle und eine Schaltfläche hinzugefügt habe (ohne irgendwelche Attribute zu ändern). Der Klick-Callback der Schaltfläche dient zum Hinzufügen der Daten zur Tabelle.
classdef test < matlab.apps.AppBase
% Properties that correspond to app components
properties (Access = public)
UIFigure matlab.ui.Figure
UITable matlab.ui.control.Table
Button matlab.ui.control.Button
end
methods (Access = private)
% Button pushed function: Button
function ButtonPushed(app, event)
data = {'1532.000'; ' 5.543'; ' 26.457'};
app.UITable.Data = data;
end
end
% App initialization and construction
methods (Access = private)
% Create UIFigure and components
function createComponents(app)
% Create UIFigure
app.UIFigure = uifigure;
app.UIFigure.Position = [100 100 640 480];
app.UIFigure.Name = 'UI Figure';
setAutoResize(app, app.UIFigure, true)
% Create UITable
app.UITable = uitable(app.UIFigure);
app.UITable.ColumnName = {'Column 1'; 'Column 2'; 'Column 3'; 'Column 4'};
app.UITable.RowName = {};
app.UITable.Position = [127 180 302 185];
% Create Button
app.Button = uibutton(app.UIFigure, 'push');
app.Button.ButtonPushedFcn = createCallbackFcn(app, @ButtonPushed, true);
app.Button.Position = [220 104 100 22];
end
end
methods (Access = public)
% Construct app
function app = test()
% Create and configure components
createComponents(app)
% Register the app with App Designer
registerApp(app, app.UIFigure)
if nargout == 0
clear app
end
end
% Code that executes before app deletion
function delete(app)
% Delete UIFigure when app is deleted
delete(app.UIFigure)
end
end
end
Nach Drücken der Taste sieht die Tabelle wie folgt:
Beachten Sie, dass AppDesigner erlaubt nur mir den Code innerhalb der ButtonPushed
Funktion zu ändern.
Haben Sie versucht, [diese Lösung] (http://stackoverflow.com/questions/38933254/how-to-customize-app-designer-figures-in-more-ways-than-offici-documented) anzupassen Deine Bedürfnisse? Was du fragst, ist fast identisch, mit dem einzigen Unterschied, dass du nach einer Tabelle fragst und die verknüpfte Frage eine Liste behandelt ... In jedem Fall füge bitte einen minimalen Code hinzu, der die fragliche "Uifigur" erzeugt. –
@ Dev-iL Danke, das sieht wirklich vielversprechend aus. Ich bin mir nicht sicher, ob ich in dieser Woche Zeit dafür haben kann, aber ich werde es tun, wenn ich Zeit dazu habe. Ich melde mich, als ich es versuchte. – luator
@ Dev-iL Ich fand früher als erwartet. Ein minimales Beispiel wird der Frage hinzugefügt. Ich habe auch versucht, aber leider scheint die Tabelle anders gehandhabt zu werden, als wenn ich sie in einem Browser öffne (alle anderen Elemente sind da). – luator