Как изменить размер области просмотра Jscrollpan, пока она видна? - PullRequest
0 голосов
/ 28 мая 2020

У меня проблема с изменением размера jpanel в jscrollpane, пока она видна. Вот мой код:

for (String Id : SearchResultsMap.keySet())
        {
            JButton IdPanelButton = CreateIdPanelButton(Id);

            IdListPanel.add(IdPanelButton);
            IdPanelButton.addActionListener(new ActionListener(){
                @Override

                public void actionPerformed(ActionEvent e)
                {
                    ClearRecordDetails();
                    setRecordDetails(SearchResultsMap.get(Id));
                }
            });
        }
        IdListPanel.setPreferredSize(new Dimension(IdListPanel.getWidth(), (int) (SearchResultsMap.size()* CreateIdPanelButton("").getHeight())));
        IdListPanel.validate();

То, что я в основном делаю, - это создание списка кнопок, которые пользователь может нажимать, а затем отображает некоторую информацию. CreatIdPanelButton просто создает новый jbutton с визуальными ограничениями. Проблема в том, что IdListPanel не изменяет размер, хотя я пытался установить предпочтительный размер. Я также попытался повторно проверить jscrollpane, но это не работает. У кого-нибудь есть идея обновить область просмотра jscrollpane, пока она видна ??

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Итак, я понял проблему, когда вы впервые создаете Jbutton, требуется некоторое время, прежде чем фактическая высота будет установлена ​​и вычислена, поэтому метод getHeight jbutton возвращал 0, потому что он еще не был установлен. Поэтому я исправил это, добавив константу целевой высоты jbutton

1 голос
/ 28 мая 2020

Проблема может заключаться в том, что вы инициализировали указанный размер, попробуйте указать размер.

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

...