JAVA Можем ли мы перекрывать объекты между севером и югом в JPanel с помощью BorderLayout? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть JTabbedPane , одна из его вкладок содержит JPanel с BorderLayout (один JPanel в СЕВЕРНОМ для элементов, подобных меню, довольно узкая высота cca. 50px + один JPanel, который содержит JScrollPane на юге для контента, который довольно высокий).

Когда я нажимаю на один из элементов меню в верхней СЕВЕРНОЙ части, я хочу, чтобы он открывал контейнер / окно в виде подменю, которое перекрывалось бы вниз над ЮЖНОЙ частью «контента» - это можно сделать и если да, то как?

Все, что я пробовал, по-прежнему делает его вырезанным там, где начинается ЮЖНАЯ часть, или обновляет НЕВЕРНУЮ высоту, что неверно (то есть: не то, что я хочу) - СЕВЕРНАЯ высота должна оставаться неизменной.

Я думал об изменении JPanel на JLayeredPane, что позволило бы мне перекрывать мои объекты (JPanels), пока мне не сказали, что нельзя добавить JLayeredPane в JTabbedPane.

Или я должен изменить свой макет с BorderLayout на что-то еще? Я пытался установить его на ноль и просто поместить все вручную, но это полностью нарушило дизайн, поэтому я сразу же удалил его.

1 Ответ

0 голосов
/ 12 сентября 2018

Итак, после предложения от @HovercraftFullOfEels ( спасибо! ) попробовать GlassPane, я немного поиграю, и это в основном все, только решение, о котором идет речь:

// MAIN_WINDOW = my main JFrame
// SUBMENU = my pseudo submenu that overlaps on top of everything else
// ADDOBJECTS = actual JPanel with submenu-like buttons, positioned manually
// this is called from a "main" menu-like button
JPanel SUBMENU = (JPanel) MAIN_WINDOW.getGlassPane();
SUBMENU.setLayout(null);
SUBMENU.add(ADDOBJECTS);
SUBMENU.setVisible(true);
...