0

こんにちは、いくつかのコードを書きましたが、動作するはずでしたが、コンパイルされ、例外などをスローすることさえありません。それはopennedのようなアイコンも作成しますが、それをクリックしても何もしません。何が間違っているのかを知るために助けが必要です。クラスのコードは次のとおりです。

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();
    }
}
4

2 に答える 2

3

ここに示すように、「drawString()座標がのベースラインを表すことを期待していStringます。」

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

ベンタナ

加えて、

  • JTextComponent編集可能なテキストにはを使用します。

  • ではなく、キーバインディングを使用しKeyListenerます。

  • pack()囲みに使用しWindowます。

  • 「SwingプログラムはオーバーライドpaintComponent()するのではなくオーバーライドする必要がありますpaint()。」— <a href="http://www.oracle.com/technetwork/java/painting-140037.html#callbacks" rel="nofollownoreferrer"> AWTおよびSwingでのペイント:ペイントメソッド

  • Swing GUIオブジェクトは、イベントディスパッチスレッドでのみ構築および操作する必要があります。

  • 適切なアクセス制御を使用します。

于 2012-11-11T18:13:04.303 に答える
1

私はあなたのコードを実行しようとしました。ウィンドウが表示されない理由を尋ねる場合は、JFrame に境界 (サイズと位置) を設定してみてください。

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

境界が設定されていない場合、装飾されたルック アンド フィールを使用すると、ウィンドウが表示されないようです。

于 2012-11-11T17:56:10.823 に答える