Вопрос

Я вложил в подкласс java.awt .Frame и переопределили paint () , так как я хочу рисовать все содержимое окна вручную.

Однако в графическом объекте (0,0) соответствует верхнему левому углу окна внутри оформления строки заголовка, а не первому рисуемому пикселю.

Могу ли я определить координату первого нарисованного пикселя (т.е. высоту оформления) кросс-платформенным способом, избегая использования специфичной для Mac OS X коэффициент выдумки ? Буду ли я вынужден вкладывать панель компонент для того, чтобы найти фактическую область рисования окна?

Здесь мой код не может центрировать синий квадрат внутри окрашиваемой области окна:

@Override
public void paint (Graphics g) {
    g.setColor(Color.BLUE);
    g.setPaintMode();
    g.fillRect(30, 30, getWidth()-60, getHeight()-60);
}
Это было полезно?

Решение

Вы можете найти вставки фрейма, вызвав метод getInsets (определенный в контейнере). Фрейм-вставки обсуждаются в верхней части документации Frame API.

Другие советы

То есть вы хотите нарисовать всю область, а заголовок вообще не нужен?

Предполагая, что вы используете JDk 1.4 (как минимум), вы можете объявить фрейм как "неукрашенный". (Java.awt.Frame # setUndecorated (булево)). Таким образом, строка заголовка не создается, и поэтому область для рисования кадров совпадает с областью использования кадров.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top