Tous,CardLayout - Cela prend le moins d'espace nécessaire
J'ai une vue de type de formulaire que je crée en Java. Basé sur le contenu d'un combobox, j'ai besoin de changer certains aspects du formulaire. J'utilise une carte pour faire ceci, et cela fonctionne très bien.
Le problème est que les cartouches utilisent le maximum de toutes les tailles préférées des composants qui leur sont ajoutés pour déterminer leur propre taille préférée. Cela signifie que lorsque j'ai choisi une option comportant moins de champs, il y a un espace vide en raison de la taille préférée de la carte sur le composant de commutation.
J'ai essayé de changer manuellement la taille préférée du panneau de carte à chaque fois que la sélection change, mais cela n'a aucun effet - le panneau est toujours le maximum qui convient à tous les composants.
combo.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
Dimension preferredSize = null;
switch (combo.getSelectedIndex()) {
case 0:
preferredSize = panel0.getPreferredSize();
break;
case 1:
preferredSize = panel1.getPreferredSize();
break;
case 2:
preferredSize = panel2.getPreferredSize();
break;
default:
assert false;
}
patternOptions.setPreferredSize(preferredSize);
c.show(patternOptions, TYPE[combo.getSelectedIndex()]);
}
});
En un mot, je voudrais que l'interface utilisateur de croître de manière dynamique lorsqu'une option est choisie qui a besoin de plus d'espace, et rétrécir quand il a besoin de moins d'espace, tout comme l'interface utilisateur de l'iTunes:
(je me rends compte que cela est une question légèrement différente, mais il est illustrative de ce que je veux -. ce panneau contenant les champs de contrainte est croissante en fonction du nombre de lignes que je dois ma mise en page de croître en fonction du nombre d'options, basé sur la sélection de la liste déroulante)
Répondez à l'adresse http://stackoverflow.com/questions/8277834/how-to-set-a-jframe-size-to-fit-the-cardlayout-displayed-jpanel – aditsu