Прокрутите JLabel в JScrollPane - PullRequest
1 голос
/ 23 июня 2010

У меня есть JScrollPane, который содержит JLabel, используя следующий код:

//Create TEXT LOG JPanel textLogPane = new JScrollPane(logLabel); textLogPane.setPreferredSize(textLogPaneDim); //textLogPane.setOpaque(true); textLogPane.setBorder(BorderFactory.createLineBorder(Color.BLACK)); textLogPane.getViewport().setBackground(Color.DARK_GRAY);

JLabel, logLabel, представлен строкой с кодировкой HTML, использующей
для возврата каретки. Я отображаю определенные изображения на основе содержимого определенных строк, и я хотел бы иметь возможность прокручивать JScrollPane, textLogPane, чтобы показать эту строку всякий раз, когда я отображаю эту графику. Я знаю содержимое строки, которую хочу отобразить, но не могу понять, как заставить ее прокручиваться вниз (или вверх) к соответствующей строке.

В случае необходимости я могу изменить что-либо, кроме JLabel, при условии, что я могу сохранить кодировку HTML и сделать ее похожей на несколько строк текста.

Извините, если это повтор, я попытался выполнить поиск, но не смог найти никаких результатов.

Спасибо

Ответы [ 2 ]

1 голос
/ 23 июня 2010

Вы не используете «возврат каретки» в HTML, вы используете теги «br».

Я бы посоветовал вам использовать JTextPane для многострочного текста. Я также считаю, что проще не использовать HTML, а вместо этого добавлять строки с атрибутами. Вы также можете вставлять значки в JTextPane.

Прочитайте раздел из учебника по Swing на Использование текстовых компонентов для рабочего примера.

1 голос
/ 23 июня 2010

Вы можете сделать некоторые пользовательские математические операции и использовать scrollRectToVisible () в вашем окне просмотра. Я не знаю, как вычислить прямоугольник конкретной строки в вашем JLabel. Лучшим решением было бы вставить ваши строки в JList, возможно, с помощью специального средства визуализации для html, и использовать

list.ensureIndexIsVisible(list.getSelectedIndex());
...