Verfasst am: 24.01.2011, 10:56
Titel: Scrollbar bei GUI mit resize-Funktion
Hallo zusammen,
Ich habe eine relativ große GUI entworfen, welche 1220 x 820 Pixel hat. Für Bildschirme mit geringerer Auflösung dachte ich daran, dass die GUI durch eine "resize"-Funktion in ihrer Größe angepasst werden kann.
Wenn man diese jedoch kleiner macht, wird nicht mehr alles angezeit und es fehlen noch links und unten jeweils ein "Scrollbar", der es möglich macht nach links und rechts, unten und oben zu scrollen.
Kann mir jemand sagen wie ich sowas implementieren könnte?
Code:
% Main figure des GUI
fh = figure('Name','Getriebeauslegung GUI',...
'NumberTitle', 'off',...
'Position',[scrsz(3)/2-610 scrsz(4)/2-4151220820],...
'Resize', 'on',...
'MenuBar', 'none',...
'Toolbar', 'none',...
'Visible','off');
1) du sollst einfach die Property Unit auf normalized setzen.
Dann werden die GUI-Objekte automatisch an die Auflösung skaliert.
Das muss man aber für jeden graphischen Objekt machen.
2) GUI soll am besten in der geringsten Auflösung entwickelt werden.
3) was du dir merken muss, ist das Verhältnis zwischen Höhe und Breite, dieses Verhältnis muss dann zwischen Auflösungen immer beibehalten werden, damit keine Verzehrungen auftreten.
das Problem ist einfach, wenn man solch eine Scrollbar mit den Matlabmöglichkeiten implementiert (Matlab Guiobjecte), dass es je nach Größe der Gui durchaus mit mehr Rechenaufwand verbunden ist. Alternativ kann man eine Oberfläche komplett mit Javaobjecten aus Matlab heraus erzeugen. Da kann man jedem Panel nach Lust und Laune Scrollbars hinzufügen ohne resizefcn zu schreiben. Zudem funktioniert das dann auch wunderbar (acuh als exe Anwendung)...
So hab ichs bei meiner MainGui gemacht und bin auch froh darüber...
1) du sollst einfach die Property Unit auf normalized setzen.
Dann werden die GUI-Objekte automatisch an die Auflösung skaliert.
Das muss man aber für jeden graphischen Objekt machen.
2) GUI soll am besten in der geringsten Auflösung entwickelt werden.
3) was du dir merken muss, ist das Verhältnis zwischen Höhe und Breite, dieses Verhältnis muss dann zwischen Auflösungen immer beibehalten werden, damit keine Verzehrungen auftreten.
Hallo denny,
die Property Unit auf normalized zu stellen, ist gar keine schlechte Sache. Auch wenns n bisschen aufwendig ist, da ich über 100 grafische Objekte in meine GUI eingebaut habe. Werde das aber wohl doch so umsetzen.
Für Punkt 2 deiner Liste ist es wohl doch ein bisschen spät. Werde das ganze nicht mehr so umbauen.
Mit normalized wäre das auch kein Problem, denke ich. Wünschenswert wäre dabei nur noch, dass das Breiten-/Höhen-Verhältnis meiner GUI immer gleich bleibt wenn ich es mit der resize-function verändere. Weißt du wie ich das bewerkstelligen könnte?
Wie dein dritten Punkt in die Programmierung einfließen kann, weiß ich leider auch nicht...
Zitat:
Alternativ kann man eine Oberfläche komplett mit Javaobjecten aus Matlab heraus erzeugen.
Wie geht denn sowas?
Wahrscheinlich langweilen meine Fragen euch, aber ich habs halt net drauf
z.B. so wie ich es in der Datei im Anhang gemacht habe. Ist aber kein optimales Beispiel, da ich jetzt auf die Schnelle keine Zeit hab etwas neues zu erstellen. Aber vom Prinzip her sollte es reichen. Man kann aber jedem jPanel jScrallbars hinzufügen, die z.B. mit
gesetzt werden was heist, dass diese nur eingeblendet werden wenn sie benötigt werden...
Natürlich muss man sich dann mit Java auseinander setzen und den GUIDE kann man auch nicht nutzen. Soll heißen alles ist Handarbeit. Zudem weiß ich gerade auch noch nicht ob es überhaupt möglich ist axes hinzuzufügen, aber da gibs in Java auch passende .jar Dateien die man einbinden kann...
Ist natürlich viel Arbeit...
MfG Marco
Edit:
Achja anbei habe ich auch noch ein Screenshot meiner Maingui um zu zeigen wie es aussehen könnte. Wie oben beschrieben läuft alles sehr flüssig...
Habe übrigens mittlerweile alles in normalized umgeschrieben ... war echt viel Arbeit immer das Verhältnis auszurechnen, aber nun siehts aus wie vorher...
Aber nochmal zurück zu meiner Frage. Kann mir jemand sagen, wie ich das Breiten/Höhen-Verhältnis sperren kann bei der Verwendung der Resize-Funktion?
Das wäre nämlich prima
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
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.