Spec-Zone .ru
спецификации, руководства, описания, API
|
Проблема: Я не знаю, куда поместить мой код рисования.
paintComponent
метод любого компонента убывал от JComponent
.Проблема: материал, который я крашу, не обнаруживается.
repaint
вызывается на Ваш компонент всякий раз, когда его появление должно быть обновлено.Проблема: передний план Моего компонента обнаруживается, но его фон невидим. Результат состоит в том, что один или более компонентов непосредственно позади моего компонента неожиданно видимы.
JPanel
s, например, непрозрачны по умолчанию во многих, но не всем взгляде и чувствах. Сделать компоненты таким как JLabel
s и GTK + JPanel
s непрозрачный, следует вызвать setOpaque(true)
на них.JPanel
или более специализированное JComponent
потомок, тогда можно нарисовать фон, вызывая super.paintComponent
прежде, чем нарисовать содержание Вашего компонента.paintComponent
метод: g.setColor(getBackground()); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(getForeground());
Проблема: Я использовал setBackground
чтобы установить цвет фона моего компонента, но это, казалось, не имело никакого эффекта.
JLabel
, например, следует также вызвать setOpaque(true)
на метке, чтобы заставить фон метки, который будет нарисован.Проблема: я использую тот же самый код в качестве учебного примера, но он не работает. Почему?
paintComponent
метод, тогда этот метод мог бы быть единственным местом, где код, как гарантируют, будет работать.Проблема: Как я крашу толстые строки? образцы?
Проблема: края определенного компонента выглядят нечетными.
setBorder
за исключением JPanel
s и пользовательские подклассы JComponent
.Border
объекты? Если так, не вызывайте setBorder
на компоненте.Проблема: Визуальные артефакты появляются в моем GUI.
setOpaque
метод, чтобы установить компонентную непрозрачность в случае необходимости. Например, область контента должна быть непрозрачной, но компоненты с прозрачными фонами не должны быть непрозрачными.Проблема: производительность моего пользовательского кода рисования плоха.
getClip
или getClipBounds
метод Graphics
определить, какую область Вы должны нарисовать. Чем меньше Вы красите, тем быстрее это будет.repaint
это определяет область рисования.Проблема: то же самое преобразовывает примененный к на вид идентичный Graphics
объекты иногда имеют немного отличающиеся эффекты.
Graphics
метод translate
) перед вызовом paintComponent
, любой преобразовывает это, Вы применяетесь, имеют совокупный эффект. Это не имеет значения, делая простое преобразование, но более сложное AffineTransform
, например, мог бы иметь неожиданные результаты.Если Вы не видите своей проблемы в этом списке, см.