Удаление границы контейнера (области прокрутки) в AWT

#java #swing #awt

#java #качать #awt

Вопрос:

Я искал решение для удаления границы по умолчанию в AWT ScrollPane.

В JScrollPane это довольно просто..

paneScrollPane.setBorder(BorderFactory.createEmptyBorder());

или

paneScrollPane.setBorder(null);

Просто хотел узнать, можем ли мы добиться того же эффекта в случае области прокрутки

Ответ №1:

Вероятно, это невозможно. Одним из основных недостатков AWT было то, что вы не можете фактически нарисовать или настроить представление вашего AWT компонента.

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

Комментарии:

1. Настройка Canvas будет такой же тяжелой работой, как и для ScrollPane btw 1

Ответ №2:

Вы могли бы использовать этот метод:

 JScrollPane scrollPane = new JScrollPane(list);
scrollPane.setViewportBorder(null);
  

Я получил эту информацию из класса javax.swing.plaf.synth.SynthScrollPaneUI:

 protected void paint(SynthContext context, Graphics g) {
    Border vpBorder = scrollpane.getViewportBorder();
    if (vpBorder != null) {
        Rectangle r = scrollpane.getViewportBorderBounds();
        vpBorder.paintBorder(scrollpane, g, r.x, r.y, r.width, r.height);
    }
}
  

Ответ №3:

это невозможно, потому AWT что реализует Look and Feel и в значительной степени основан на методах, которые пришли из родной ОС ( Themes ), Границы реализованы только для Swing JComponents ,

Комментарии:

1. итак, есть ли какой-либо другой способ удалить границу по умолчанию, которая отображается на области прокрутки? Спасибо..

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