Во-первых - макет GridBag не работает, устанавливая координаты пикселей, но вместо этого создается пропорционально другим объектам на экране. Смотрите эту ссылку.
В частности, важно понимать это:
В GridBagLayout нет возможности указать размер сетки. Там не должно быть. Размер сетки определяется неявно ограничениями всех объектов;
Пример можно увидеть на этом изображении. Каждое «местоположение» на экране фактически является относительной позицией сетки.
Во-вторых - Ваш вопрос странно сформулирован, но, насколько я понимаю, вы хотите изменить длину полосы прокрутки, чтобы она покрывала большую часть экрана. Чтобы изменить свойства полосы прокрутки, важно изменить ScrollBar.setPreferedSize()
. См. JScrollBars.
Это правильный метод для изменения. Если setPreferedSize()
не работает, то вы явно не опубликовали весь код. Попытка проверить, что вы не переопределяете это где-то в вашей программе (используя setMaximumSize()
или случайно устанавливая размер в другом месте).
Если вы не переопределите его, то, возможно, вы столкнулись с ошибкой в вашем менеджере раскладки. В вашем другом вопросе вы, похоже, вручную устанавливаете размеры строк и столбцов. Это может переопределить размер ваших компонентов:
GridBagLayout gbl_ViewPane = new GridBagLayout();
gbl_ViewPane.columnWidths = new int[]{0, 0, 0, 0, 0, 222, 0};
gbl_ViewPane.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
gbl_ViewPane.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
gbl_ViewPane.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
ViewPane.setLayout(gbl_ViewPane);
В качестве альтернативы ваш менеджер компоновки может просто не быть реализован правильно, или вы не можете pack()
правильно использовать вашу полосу прокрутки. Если вы протестируете свой код более изолированным способом, вы обнаружите, что это может быть ошибка в вашем коде, вызывающая ошибку.
Также важно отметить, это плохая практика, чтобы устанавливать размер вручную .