Я пишу простую программу для проверки базового графического интерфейса. Программа печатает букву в центре экрана и позволяет пользователю перемещать ее с помощью клавиш со стрелками. Все работает нормально, но когда я пытаюсь центрировать букву в начале программы, кажется, что функции getWidth
и getHeight
не возвращают правильные числа.
Вот фрагмент, содержащий мой класс Panel
static class LinePanel extends JPanel{
int xCenter = getWidth() /2;
int yCenter = getHeight() /2;
private int x = xCenter;
private int y = yCenter;
private char keyChar = 'A';
public LinePanel(){
addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_DOWN: y += 10; break;
case KeyEvent.VK_UP: y -= 10; break;
case KeyEvent.VK_LEFT: x -= 10; break;
case KeyEvent.VK_RIGHT: x += 10; break;
default: keyChar = e.getKeyChar();
}
repaint();
}
});
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.setFont(new Font("TimesRoman", Font.PLAIN, 24));
g.drawString(String.valueOf(keyChar), x, y);
}
}
Почему мои функции getWidth
и getHeight
возвращают «0»?
Спасибо за любую помощь