2016-05-09 9 views
0

У меня есть это требование, когда мне нужно отображать меню, которые могут идти на несколько уровней вниз. Теперь на каждом уровне в меню может быть много объектов, что означает, что я должен показать полосу прокрутки в меню.java многоуровневое всплывающее меню с прокруткой

1 
1->1 
1->2 
2 

Я могу написать пользовательский класс «JScrollPopupMenu», который вводит полосу прокрутки в меню. Теперь я могу контролировать только первое всплывающее меню, но и для следующего меню уровня у меня нет контроля над всплывающим меню не создаются Примера:

//this is the first pop-up menu 
JPopupMenu scrollablePopupMenu = new JScrollPopupMenu(); 
JMenu menu = new JMenu("1"); 
scrollablePopupMenu.add(menu); 
menu = new JMenu("2"); 
scrollablePopupMenu.add(menu); 
//this is the child menu for "1", I have no control over //childMenu.getPopupMenu(), this is created internally inside JMenu 
JMenu childMenu = new JMenu("1->1"); 
menu.add(childMenu); 
childMenu = new JMenu("1->2"); 
menu.add(childMenu); 

В приведенном выше примере, на первый уровень всплывающих окон имеет полосу прокрутки, но всплывающее окно следующего уровня не работает. Есть ли способ, которым это может быть достигнуто?

+1

Чтобы лучше помочь, отправьте сообщение [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). –

ответ

1

Если у вас есть много пунктов меню, вы должны пересмотреть свой графический интерфейс.

1) Правило большого пальца в юзабилити говорит, что вы не должны отображать более 8 выборов в группе.

2) Просто потому, что Windows имеет прокручиваемое меню в меню «Пуск», не делает его хорошим примером. Фактически, Microsoft оставила это вместо поиска, просто потому, что огромное прокручиваемое меню не является удобным для пользователя.