我正在尝试编写一个绘制圆圈的小程序。如果我按 L,圆圈的大小会增大,如果我按 S,圆圈的大小会减小。
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class oval extends Applet implements KeyListener{
private int d=10;
@Override
public void init() {
setSize(500,500);
addKeyListener(this);
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawOval(100, 100, d, d);
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyChar()=='L')
d=d+5;
else if(e.getKeyChar()=='S')
d=d-5;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
最佳答案
编辑:抱歉,我没有完全阅读您的代码...您实际上正确使用了 KeyEvent,但是当您比较字符时,您需要使用小写 l 而不是大写:
if(e.getKeyChar() == 'l')
not
if(e.getKeyChar() == 'L') //this will work if the user presses Shift+l
我刚刚向您展示了另一种方法,我设置的方法适用于小写 l 和大写 l。所以它不区分大小写。
您没有正确使用 KeyEvent 来触发特定按键。这是您经过测试并正常工作的代码:
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class oval extends Applet implements KeyListener
{
private int d=10;
@Override
public void init()
{
setSize(500,500);
addKeyListener(this);
}
@Override
public void paint(Graphics g)
{
super.paint(g);
g.drawOval(100, 100, d, d);
}
@Override
public void keyTyped(KeyEvent e)
{
}
@Override
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_L)
d=d+5;
else if(e.getKeyCode()==KeyEvent.VK_S)
d=d-5;
repaint();
}
@Override
public void keyReleased(KeyEvent e)
{
}
}
我删除了您通过 keyReleased 事件抛出的错误,因为我不知道为什么会出现这种情况...
关于java - GUI 中的可调圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26512430/