#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. поскольку я знаю, что нет правильного способа, возможно, существует грязный способ извлечения границ и изменения цвета, вы должны попробовать, какие компоненты возвращают область прокрутки, но я до сих пор не знаю ни одной причины использовать доисторические компоненты, которые умерли в прошлом столетии