2017-04-05 2 views
3

J'utilise uitable dans matlab GUI. Dans cette interface graphique, lignes et colonnes de uitable après chaque traitement et donc je ne peux pas utiliser Position propriété de Uitable. quand je dessine une certaine zone reste vide et sa position est toujours dans le cornser inférieur gauche de la figure GUI. L'image est illustré ci-dessous:Modifier la taille de uitable dans matlab

enter image description here

Je veux enlever zone blanche de table de i.e. redimensionnez automatiquement en fonction à la ligne et les colonnes.

Comment puis-je faire cela?

Répondre

3

A possible way-around to handle this issue: La hauteur de ligne et la largeur de colonne ne sont pas liées aux dimensions de la table, car une table peut contenir un nombre quelconque de lignes/colonnes. C'est pourquoi la table a des barres de défilement. Pour cette raison, le redimensionnement de la table n'affecte que la fenêtre d'affichage des barres de défilement et NOT n'affecte pas les aspects internes tels que la hauteur des lignes ou la largeur des colonnes. Vous pouvez intercepter le rappel de redimensionnement et modifier par programme la hauteur de la ligne et la largeur de la colonne en fonction de la nouvelle taille de la table. Cependant, je suggère de ne pas le faire parce que la plupart des utilisateurs sont habitués au comportement actuel, pas seulement dans Matlab mais dans la plupart des applications basées sur l'interface graphique.

Un autre moyen de contourner peut être de normaliser vos unités, en utilisant 'FontUnits', 'Normalized', cela peut vous aider. Étant donné que la taille de la police va changer, la largeur des lignes et des colonnes sera également modifiée, mais au moment où la police n'aura pas besoin d'agrandir la largeur de la colonne, la colonne cessera de se redimensionner.

Le code suivant sera utile.

clear all; 
clc; 

%% Create a random dataset with any number of rows and columns 
data = rand(10, 15); 

%% Create a uitable 
t = uitable('Data',data); 

%% Set the position and size of UITable 
% Position(1) = Distance from the inner left edge of the figure 
% Position(2) = Distance from the inner bottom edge of the figure 
% Position(3) = Distance between the right and left edges of rectangle containing the uitable 
% Position(4) = Distance between the top and bottom edges of rectangle containing the uitable 
% Extent(1) = Always zero 
% Extent(2) = Always zero 
% Extent(3) = Width of uitable 
% Extent(4) = Height of uitable 
t.Position = [350 350 t.Extent(3) t.Extent(4)]; 

%%End 
+2

Bonjour, @Waseem Anwar, en utilisant t = uitable ('Data', rand (6,3)); t.Position (3: 4) = t.Extent (3: 4); nous pouvons changer la taille mais la figure vient toujours dans le coin inférieur gauche de la figure et lorsque nous dessinons deux tables de rangées différentes, une première couvre partiellement ou entièrement. Comment changer l'emplacement de la table lors du dessin en utilisant les commandes ci-dessus. Quelle est la signification de (3: 4) dans les commandes ci-dessus? –

+0

Bonjour @NaseebGill, c'est génial. Vous êtes maintenant très proche de votre solution. Afin de comprendre t.Position (3: 4) = t.Extent (3: 4), nous devons regarder à l'intérieur des deux propriétés de .i.e. position et étendue. La position est un vecteur de 4 éléments [(Distance du bord gauche de la figure) (Distance du bord inférieur de la figure) (largeur de la table) (hauteur de la table)]. Cela signifie que vous pouvez changer la position de la table en jouant avec les deux premières valeurs. D'autre part, Extent est un vecteur à 4 éléments en lecture seule (vous ne pouvez pas définir les paramètres) qui vous donne la largeur (3) et la hauteur (4) de la table. –

+0

suite ... Alors que les deux premiers éléments d'Extent sont toujours zero.so statement (t.Position (3: 4) = t.Extent (3: 4);) obtient en fait la largeur et la hauteur de la table des 3ème et 4ème éléments d'Etendre et placer ces valeurs dans les 3ème et 4ème éléments de Position. Afin de définir l'emplacement, vous pouvez jouer avec les deux premiers éléments de la position. Le coin inférieur gauche correspond à (0,0) tandis que le coin supérieur gauche correspond à la taille maximale de la figure. Veuillez noter que la position et l'étendue sont des propriétés différentes. L'étendue correspond à la table de valeurs tandis que la position correspond à la table + le conteneur (blanc). –