Получение рисованной области кадра AWT в Mac OS X?
Вопрос
Я вложил в подкласс 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 (булево)). Таким образом, строка заголовка не создается, и поэтому область для рисования кадров совпадает с областью использования кадров.