Я использую библиотеку MigLayout для графического интерфейса Swing.
Я хотел бы наложить два JPanel так:
+----+-----------------------+
| 1 | 2 |
| | |
+----+ |
| |
| |
| |
| |
+----------------------------+
очень похоже на миникарту в видеоигре.
Мне кажется, есть два способа добиться этого:
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));
Однако этот подход ненадежен, потому что мне нужно указать WIDTH
и HEIGHT
. Если размер окна изменен, то кажется, что мне нужно снова вычислить эти значения.
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));
Можно ли заполнить код позиционирования чем-то, что позволяет использовать наложения с помощью MigLayout, позволяя мне указывать значения в процентах (в отличие от разрешения в пикселях WIDTH
и HEIGHT
в первом примере)?
ИЗМЕНИТЬ:
Вот решение, которое частично работает:
positioning = new CC().width("100%").height("100%");
// ...
positioning = new CC().pos("10", "10");
Однако дисплей дрожит и иногда его не видно. Я считаю, что это связано с неопределенным порядком рендеринга (хотя это просто интуиция).