Получение рисованной области кадра AWT в Mac OS X - PullRequest
4 голосов
/ 11 октября 2008

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

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

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

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

@Override
public void paint (Graphics g) {
    g.setColor(Color.BLUE);
    g.setPaintMode();
    g.fillRect(30, 30, getWidth()-60, getHeight()-60);
}

Ответы [ 2 ]

2 голосов
/ 22 октября 2008

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

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

2 голосов
/ 11 октября 2008

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

...