【发布时间】:2012-01-10 07:09:04
【问题描述】:
我正在编写一个简单的程序来测试基本的 GUI。该程序在屏幕中间打印一个字母,并允许用户使用箭头键移动它。一切正常,但是当我尝试在程序开始时将字母居中时,getWidth 和 getHeight 函数似乎没有返回正确的数字。
这是包含我的 Panel 类的 sn-p
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”?
感谢您的帮助
【问题讨论】:
标签: java swing jpanel keylistener graphics2d