Металлическая ошибка рендеринга LAF JScrollPane? - PullRequest
0 голосов
/ 08 февраля 2011

Поработав с классом JScrollPane в течение нескольких дней, я столкнулся с очень странной проблемой рендеринга, связанной с горизонтальным компонентом JScrollBar.При использовании этих компонентов в стандартном размахе «Металл» внешний вид центральной ручки горизонтальной полосы прокрутки отображается неправильно при определенных размерах содержимого / области просмотра.

Приведенный ниже код открывает простое окно JFrameсо встроенным компонентом JScrollPane, который, по-видимому, демонстрирует странное поведение рендеринга , когда горизонтальная полоса прокрутки перетаскивается в крайнее правое положение .Так как рендеринг захвата горизонтальной полосы прокрутки зависит от размера содержимого / области просмотра, этот код открывает родительский JFrame с явным размером 1402x800.Различные размеры, по-видимому, имеют тот же эффект, включая развернутое окно с разрешением 1440x900, и проблема имеет тенденцию проявляться с большей готовностью в некомпозитной среде рабочего стола (то есть в Windows XP или Vista / 7 с базовой / классической темой).

public class Main
{
 public static void main(String[] args)
 {
  ScrollbarTest application = new ScrollbarTest();
  application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
}

public class ScrollbarTest extends JFrame
{

 public ScrollbarTest()
 {
  super("Scrollbar Test");
  Container container = getContentPane();

  JScrollPane scrollPane =
    new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                    JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

  JPanel contentPanel = new JPanel();
  contentPanel.setPreferredSize(new Dimension(8000, 8000));

  scrollPane.getViewport().add(contentPanel);
  container.add(scrollPane);

  setSize(1402,800);
  setVisible(true);
 }
}

Поскольку мне запрещено загружать изображения непосредственно на этот форум, я разместил здесь изображение , изображающее аномалию, которую я испытываю в настоящее время.Как вы можете видеть, центральный элемент захвата не отображается правильно, так как я перетаскиваю горизонтальную полосу прокрутки к ее правому краю.Обратите внимание, что этого не происходит при всех размерах окна, но начальное измерение JFrame 1402x800, безусловно, помогает моей системе.Честно говоря, эта проблема не была очевидной, пока я не перешел с экрана 1280x800 на экран 1440x900.

Любые комментарии, касающиеся воспроизводимости и / или причины этой аномалии, будут с благодарностью приняты.

BestС уважением, Ли.

1 Ответ

0 голосов
/ 08 февраля 2011

Спасибо всем, что нашли время, чтобы прочитать этот пост. Поскольку мы не являемся профессиональными программистами, нам пришлось обратиться за советом, чтобы убедиться, что мы правильно использовали java API. Мы попросили парней из Sun взглянуть на нашу проблему, и это, похоже, ошибка в «металлическом» стиле свинга. Пожалуйста, см. Ниже для соответствующей корреспонденции.

Уважаемый Java-разработчик,

Спасибо за сообщение об этой проблеме.

Мы определили, что этот отчет новый баг и ввел баг в наш внутренняя система отслеживания ошибок под ошибкой Id: 7017935.

Вы можете отслеживать эту ошибку на Java База данных ошибок на http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7017935.

Это может занять день или два до вашего ошибка обнаруживается в этом внешнем база данных. Если вы являетесь членом Sun Developer Network (SDN), есть две дополнительные опции, как только ошибка виден.

  1. Голосование за ошибку Нажмите http://bugs.sun.com/bugdatabase/addVote.do?bug_id=7017935.

  2. Добавление отчета в список отслеживания ошибок. Вы получите электронное письмо уведомление, когда эта ошибка обновляется. Нажмите «http://bugs.sun.com/bugdatabase/addBugWatch.do?bug_id=7017935".

Сеть разработчиков Sun (http://developers.sun.com) бесплатно сервис, который предлагает Sun Присоединиться, визит «https://softwarereg.sun.com/registration/developer/en_US/new_user".

С уважением, Поддержка разработчиков Java

С наилучшими пожеланиями, Ли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...