java Composite Comment taille fixe
Je veux avoir un redimensionnable panneau, qui a toujours le haut panneau vert d'une profondeur fixe. c'est à dire toutes les variations de la hauteur le panneau jaune seulement.
Mon code ci-dessous est presque OK, sauf le vert du panneau varie en taille un peu.
Comment puis-je faire cela?
Panel.setLayout(new BoxLayout(Panel, BoxLayout.Y_AXIS));
Panel.setAlignmentX(Component.LEFT_ALIGNMENT);
JPanel TopPanel = new JPanel();
TopPanel.setPreferredSize(new Dimension(80,150));
TopPanel.setVisible(true);
TopPanel.setBackground(Color.GREEN);
JPanel MainPanel = new JPanel();
MainPanel.setPreferredSize(new Dimension(80,750));
MainPanel.setVisible(true);
MainPanel.setOpaque(true);
MainPanel.setBackground(Color.YELLOW);
Panel.add(TopPanel);
Panel.add(MainPanel);
OriginalL'auteur ManInMoon | 2013-11-12
Vous devez vous connecter pour publier un commentaire.
Votre question n'est pas de restreindre la solution à un
BoxLayout
, donc je vais proposer une mise en page différente manager.J'attaque avec un
BorderLayout
et de mettre le panneau vert dans le PAGE_START emplacement. Ensuite, mettre le panneau jaune dans le CENTRE de l'emplacement, sans unpreferredSize
appel.http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html
Voici un SSCCE exemple de la solution:
fonctionne très bien pour moi, j'ai édité par répondre avec un exemple complet. Il doit y avoir quelque chose de différent que vous faites.
Oui. J'ai eu une erreur. Vous code fonctionne parfaitement merci
+1. Cela m'a aidé à résoudre un problème où j'ai d'abord eu 3 composants dans un VerticalBox et une modification à l'un serait la cause de tous les 3 pour modifier la taille. Maintenant, les changements de l'un n'affecte pas la taille des autres en raison de l'aide d'un BorderLayout.
OriginalL'auteur jzd
Si vous faites votre
Panel
utilisationBorderLayout
au lieu deBoxLayout
et mettreTopPanel
dansBorderLayout.NORTH
etMainPanel
dansBorderLayout.CENTER
, alors ils seront à la fois redimensionner horizontalement, mais seulement laMainPanel
redimensionner verticalement.Voir le BorderLayout documentation
Voir jzd commentaire et édité réponse.
OriginalL'auteur gla3dr