#java #swing #mouseover #paint #jtabbedpane
#java #качать #наведение курсора мыши #Краски #jtabbedpane
Вопрос:
Я работаю с приложением, которое испытывает проблемы с рисованием на компьютерах некоторых пользователей, когда мышь проходит по вкладкам в JTabbedPane
. У них также иногда возникают аналогичные проблемы с другими интерактивными компонентами, такими как JButton
s. Я только когда-либо видел, чтобы эта ошибка возникала при наведении курсора мыши.
Приложение запускается с 1.6.0_20, и я уже попробовал флаг, рекомендованный в обновлении 10, на случай, если это была проблема с D3D (-Dsun.java2d.d3d= false).
Поскольку я новый пользователь, я не могу опубликовать картинку, иллюстрирующую эту ошибку. Лучший пример, который я могу придумать, — это использование Windows paint eraser на изображении, которое создаст нечто подобное тому, что я вижу.
Я ценю любую помощь, которую вы можете предоставить.
Ответ №1:
Без sscce, который демонстрирует описанную вами проблему, трудно быть конкретным, но это напоминает мне об артефакте рендеринга, связанном с установкой opaque
свойства на true
без полного рендеринга области, определенной границами компонента. В частности, если вы переопределите paintComponent()
и «не соблюдаете свойство opaque, вы, скорее всего, увидите визуальные артефакты». Наконец, настройка непрозрачности по умолчанию для некоторых компонентов зависит от внешнего вида, поэтому эффект может зависеть от платформы.
Комментарии:
1. Спасибо за ваш ответ. К сожалению, я не могу предоставить пример кода. Я даже не могу воспроизвести это сам. Я унаследовал приложение и сталкивался со многими случаями, когда paintAll вызывался снова и снова, но только один раз, когда paint был переопределен. Я попытался устранить как можно больше из них на случай, если они являются виновниками. Ошибка для пользователей, которые сталкиваются с этим, похоже, возникает в любом компоненте, где наведение курсора мыши изменяет графику. Т. Е. наведение курсора мыши на вкладку в панели с вкладками или на кнопку.