2017-10-16 10 views
0

Donc, mon programme de calculatrice semble bon sauf si je le redimensionne. Ensuite, les choses se gâtent. En ce moment j'utilise un GridBagLayout pour organiser mes boutons (j'ai pensé qu'il était préférable d'utiliser GridBag pour cette situation avec un certain nombre de boutons). J'ai mis le preferredSize à ce que je voudrais que la taille des boutons soit au démarrage. Comment puis-je obtenir les boutons pour changer la taille lors du redimensionnement de la fenêtre?Java Comment faire pour redimensionner JComponent en fonction de la largeur de la trame

enter image description here

C'est ce qui se passe après l'application redimensionne plus petite. Quand je l'agrandis, tout reste le même et j'obtiens un vide gris de chaque côté pour faire de l'espace, au lieu d'agrandir les boutons.

Pour les dimensions de mes boutons, j'utilise new Dimension(80, 55) Puis, définissez la valeur preferredSize sur cette dimension. Pour les boutons de mémoire et les jlabels, je calcule des maths pour les rendre aussi larges que le nombre total de boutons.

Veuillez noter J'apprends toujours Java, ainsi que la bibliothèque swing. FIN NOTE

MISE À JOUR j'ai essayé le réglage de la taille minimale et maximale quand je mets la taille préférée et toujours pas aller FIN MISE À JOUR

MISE À JOUR 2 J'ai essayé de régler la taille de mon panneau principal pour correspondre à la taille de l'application au démarrage et cela ne fonctionne pas FIN mISE à JOUR

EDIT 2 Ma hiérarchie est comme ceci:

FRAME 
    MAINPANEL - Contains all three panels 
     TOPPANEL - Contains the display 
     MIDDLEPANEL - Contains memory buttons 
     BOTTOMPANEL - Contains calculator buttons 

FIN EDIT 2

Répondre

0

Je recommande d'utiliser TableLayout d'Oracle (vous pouvez le télécharger là-bas), car il est plus confortable. Bien sûr, c'est aussi possible avec le GridBagLayout, mais surtout quand vous êtes nouveau, le TableLayout est beaucoup plus facile à comprendre et à configurer.

Oracle TableLayout

double size[][] = 
     {{0.25, 0.25, 0.25, 0.25}, //Horizontal 
     {50, TableLayout.FILL, 40, 40, 40}}; //Vertical 

frame.setLayout (new TableLayout(size)); 

Il est essentiellement une grille qui est séparé en lignes et en colonnes. Ainsi, chacune des cellules a un identifiant, par exemple "0, 0". La hauteur et la largeur sont ajustables avec les pixels, le pourcentage et Layout.FILL, qui utilise l'espace disponible. Si vous utilisez plusieurs Layout.FILL, il séparera l'espace disponible entre eux. Pour ajouter des boutons ou d'autres éléments, vous devez connaître les coordonnées de la cellule, si elle est plus grande qu'une cellule, vous pouvez ajouter une cellule de fin, afin que vous puissiez utiliser toute la place disponible.

// Add buttons 
    frame.add (button[0], "1, 1, 4, 1"); // Top 
    frame.add (button[1], "1, 4, 4, 4"); // Bottom 
    frame.add (button[2], "1, 3  "); // Left 
    frame.add (button[3], "4, 3  "); // Right 
    frame.add (button[4], "3, 3, c, c"); // Center 
    frame.add (button[5], "3, 3, 3, 4"); // Overlap 

Voici quelques liens utiles:

http://www.oracle.com/technetwork/java/tablelayout-141489.html http://www.clearthought.info/sun/products/jfc/tsc/articles/tablelayout/Simple.html http://www.clearthought.info/sun/products/jfc/tsc/articles/tablelayout/Preferred.html