Фон
Хотите добавить кнопку блокировки прокрутки в угол JScrollPane
, не закрывая содержимое окна просмотра. На следующем изображении показано, как JScrollPane
завернуто в SwingNode
в приложении JavaFX:
В правом нижнем углу показана кнопка со значком замка, который можно переключить, что является желаемым результатом:
Обратите внимание, как видно содержимое в самом низу окна просмотра — часть рядом с кнопкой блокировки. (Нажатие кнопки будет имитировать нажатие кнопки блокировки прокрутки на клавиатуре. Наличие кнопки блокировки прокрутки вверху вполне нормально, если так проще.)
Проблема
JScrollPane API показывает следующее изображение:
Включение углового компонента также требует добавления заголовка столбца. Добавление заголовка закрывает часть окна просмотра прямо пропорционально высоте кнопки блокировки прокрутки. Вот скриншот, показывающий видимый заголовок столбца, который скрывает часть документа:
Идеи
Я пытался сделать панель просмотра заголовка прозрачной, но безрезультатно.
Код
Соответствующий код в SwingNode
:
// FlyingSaucer subclass
mView = new HtmlPanel();
mScrollPane = new JScrollPane( mView );
setContent( mScrollPane );
final var lock = new JButton( "X" );
mScrollPane.setCorner( UPPER_TRAILING_CORNER, lock );
mScrollPane.setVerticalScrollBarPolicy( VERTICAL_SCROLLBAR_ALWAYS );
final var header = new JPanel();
header.setPreferredSize(
new Dimension( 12, lock.getPreferredSize().height ) );
header.setOpaque( false );
header.setBackground( new Color( 0, 0, 0, 0 ) );
mScrollPane.setColumnHeaderView( header );
Другой пример см. в ответе camickr.
Вопрос
Как бы вы добавили кнопку в нижний (или верхний) угол JScrollPane
, чтобы содержимое окна просмотра не закрывалось?