JScrollPane: вертикальная полоса видна, но не активна

#java #swing #jscrollpane

#java #качать #jscrollpane

Вопрос:

Я использую следующий код для отображения вертикальной полосы JTable . Несмотря на это, она активна. Я не могу прокрутить вниз:

 scrollPane = new javax.swing.JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    table = new javax.swing.JTable(dtm);
    table.setName("table"); // NOI18N
    sorter = new TableRowSorter<DefaultTableModel>(dtm);
    table.setRowSorter(sorter);
    table.setPreferredSize(new java.awt.Dimension(300, 190));
    scrollPane.setViewportView(table);
  

Добавлено изображение:

введите описание изображения здесь

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

1. попробуйте изменить JScrollPane.VERTICAL_SCROLLBAR_ALWAYS на JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED

2. Никаких изменений в поведении вообще

3. Добавлено изображение @ejay_francisco

4. Избавьтесь от вызова setPreferredSize

5. @MadProgrammer Люблю тебя, братан! Ты совсем не злишься! Пожалуйста, сделайте это ответом, поэтому я принимаю

Ответ №1:

Не используйте setPreferredSize , JViewport используется для получения информации, чтобы определить, сколько места требуется, которое JScrollPane затем используется, чтобы решить, нужно ли отображать полосы прокрутки или нет

Если вам действительно абсолютно необходимо изменить видимый размер таблицы, попробуйте использовать setPreferredScrollableViewportSize