Нужна помощь с логикой вложенной полосы прокрутки - PullRequest
3 голосов
/ 09 сентября 2011

Мне нужно создать «вложенную» область прокрутки в другой области прокрутки, и я ищу несколько логических советов.

Вот что я хочу сделать - enter image description here

I 'Я собираюсь использовать аналогию с «цифровым кабельным телевидением», чтобы упростить эту задачу, поскольку это то, о чем она мне напоминает.

Думайте о полях на красной панели слева как «Названия каналов» и думайте ополя на синей панели должны быть «Показать имена».

Черная полоса прокрутки справа должна управлять вертикальной прокруткой обеих панелей, чтобы имена каналов всегда совпадали с именами шоу.

ОДНАКО, также должна быть горизонтальная полоса прокрутки (синяя), которая влияет только на прямоугольники синего цвета (представьте, что вы прокручиваете вперед, чтобы увидеть, какие шоу будут происходить, но при этом хотите иметь названия каналов)слева, чтобы вы знали, что происходит)

Стратегии, которые я пробовал до сих пор, всегда приводят к тому, что горизонтальная полоса прокрутки отображается только внизу вертикальной полосы прокрутки, и яТ должен быть виден все время.Помоги мне!это возможно?

Ответы [ 3 ]

1 голос
/ 09 сентября 2011

Вы можете сделать что-то подобное, используя компонент заголовка строки.Следующий базовый пример может показать вам идею:

JList insideLeft = new JList(new String[] { "Line 1", "Line 2", "Line 3" });
JList insideRight = new JList(new String[] { "Item 1", "Item 2", "Item 3" });
JScrollPane scrollPane = new JScrollPane(insideRight, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setRowHeaderView(insideLeft);
1 голос
/ 10 сентября 2011

Вы можете синхронизировать прокрутку и выбор между двумя таблицами, как я обнаружил здесь .

0 голосов
/ 09 сентября 2011

Я предполагаю, что у вас есть как красные, так и синие области на их собственной панели.Соответственно, redPanel и bluePanel.

Если это так, попробуйте что-то вроде этого:

JScrollPane bluePane = new JScrollPane(bluePanel, 
        JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
JPanel redAndBluePanel = new JPanel();
redAndBluePanel.setLayout(new BoxLayout(redAndBluePanel, BoxLayout.X_AXIS));
redAndBluePanel.add(redPanel);
redAndBluePanel.add(bluePane);
JScrollPane redAndBluePane = new JScrollPane(redAndBluePanel, 
        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

Теперь просто используйте add redAndBluePane в любой области, которая вам нужна, и она должна работать как нужно.

...