使用KeyAdapter的运行时错误,awt,在java上摆动。帮助发现错误

时间:2012-11-11 17:15:37

标签: java swing awt

你好我写了一些代码我虽然它会起作用,但它编译,它甚至没有抛出异常或任何东西。它也创建了像它打开的图标,但我点击它,它没有做任何事情请帮助知道我做错了什么。下面是该类的代码:

package practicagraficos8;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ventanatexto {
   public JFrame ventana;
   public String texto;
    ventanatexto(){
    JFrame.setDefaultLookAndFeelDecorated(true);
    texto="";
    ventana= new JFrame("teclado");
    panel1 panel= new panel1();
    ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ventana.add(panel);
     ventana.setVisible(true);
    ventana.addKeyListener(new handler());

    }

    public class panel1 extends JPanel {

        @Override
    public void paint(Graphics g){
        super.paint(g);
    Dimension dim= getSize();
    g.clearRect(0, 0, dim.width, dim.height);
    g.drawString(texto, WIDTH, WIDTH);
    };


}
    class handler extends KeyAdapter{
        @Override
    public void keyPressed(KeyEvent k){
    char tecla= k.getKeyChar();
    switch(tecla){

        case 127:texto="";
    break;
        case 8: if(texto.length()>0){texto=texto.substring(0, texto.length()-1);}
            break;
        default:
            if (texto.length()<15){texto+=tecla;}

    }
    ventana.repaint();
    }

    }}

这是我的主要内容:

package practicagraficos8;

public class Practicagraficos8 {

    public static void main(String[] args) {

        ventanatexto prueba= new ventanatexto();
    }
}

2 个答案:

答案 0 :(得分:3)

如图here所示,“drawString()期望坐标代表String的{​​{3}}。”

FontMetrics fm = g.getFontMetrics();
g.drawString(texto, 0, fm.getAscent());

ventana

此外,

答案 1 :(得分:1)

我尝试过运行你的代码。如果您问为什么窗口没有显示,请尝试在JFrame上设置边界(大小和位置):

ventana.setBounds(0, 0, 200, 200);

当使用装饰的外观时,如果没有设置边界,似乎窗口不会显示。