|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Проблема: Я не знаю, куда поместить мой код рисования.
paintComponent метод любого компонента убывал от JComponent.Проблема: материал, который я крашу, не обнаруживается.
repaint вызывается на Ваш компонент всякий раз, когда его появление должно быть обновлено.Проблема: передний план Моего компонента обнаруживается, но его фон невидим. Результат состоит в том, что один или более компонентов непосредственно позади моего компонента неожиданно видимы.
JPanels, например, непрозрачны по умолчанию во многих, но не всем взгляде и чувствах. Сделать компоненты таким как JLabels и GTK + JPanels непрозрачный, следует вызвать 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 за исключением JPanels и пользовательские подклассы JComponent.Border объекты? Если так, не вызывайте setBorder на компоненте.Проблема: Визуальные артефакты появляются в моем GUI.
setOpaque метод, чтобы установить компонентную непрозрачность в случае необходимости. Например, область контента должна быть непрозрачной, но компоненты с прозрачными фонами не должны быть непрозрачными.Проблема: производительность моего пользовательского кода рисования плоха.
getClip или getClipBounds метод Graphics определить, какую область Вы должны нарисовать. Чем меньше Вы красите, тем быстрее это будет.repaint это определяет область рисования.Проблема: то же самое преобразовывает примененный к на вид идентичный Graphics объекты иногда имеют немного отличающиеся эффекты.
Graphics метод translate) перед вызовом paintComponent, любой преобразовывает это, Вы применяетесь, имеют совокупный эффект. Это не имеет значения, делая простое преобразование, но более сложное AffineTransform, например, мог бы иметь неожиданные результаты.Если Вы не видите своей проблемы в этом списке, см.