J'utilise la bibliothèque MigLayout pour une interface graphique Swing.Est-il possible de spécifier la profondeur dans MigLayout?
Je voudrais superposer deux JPanel, comme si:
+----+-----------------------+
| 1 | 2 |
| | |
+----+ |
| |
| |
| |
| |
+----------------------------+
beaucoup comme un minimap dans un jeu vidéo.
Il me semble qu'il ya deux façons d'y parvenir:
JLayeredPane
JPanel main = new JPanel();
main.setBounds(0, 0, WIDTH, HEIGHT);
// ... fill it with Swing components ...
JPanel minimap = new JPanel();
minimap.setBounds(10, 10, 100, 100);
/// ... fill it with Swing components ...
JLayeredPane layer = new JLayeredPane();
layer.add(main, new Integer(0));
layer.add(minimap, new Integer(1));
Cette approche, cependant, est fragile parce que je dois préciser WIDTH
et HEIGHT
. Si la fenêtre est redimensionnée, il semble que je doive à nouveau calculer ces valeurs.
JLayeredPane & MigLayout
JPanel main = new JPanel();
// ... fill it with Swing components ...
JPanel minimap = new JPanel();
/// ... fill it with Swing components ...
JLayeredPane layer = new JLayeredPane();
layer.setLayoutManager(new MigLayout());
CC positioning;
positioning = // ??? something specified in percents and z-order?
layer.add(main, positioning, new Integer(0));
positioning = // ??? something specified in percents and z-order?
layer.add(minimap, positioning, new Integer(1));
Est-il possible de remplir le code de positionnement avec quelque chose qui permet des superpositions en utilisant MigLayout tout en me permettant de spécifier des valeurs en pourcentage (par opposition à la résolution de pixels WIDTH
et HEIGHT
dans le premier exemple)?
EDIT:
Voici une solution qui partiellement œuvres:
positioning = new CC().width("100%").height("100%");
// ...
positioning = new CC().pos("10", "10");
Cependant, la frousse d'affichage et est parfois invisible. Je crois que cela a à voir avec un ordre de rendu indéterminé (bien que ce soit juste une intuition).
J'ai aussi essayé setComponentZOrder, mais cela ne semble pas avoir d'effet. – sdasdadas