我下面的Java代码试图进行keyListener继承。问题是私有静态JTextArea jt;在CustomKeyListener类中无法识别。我不知道我认为这两个类是通过jt.addKeyListener(new CustomKeyListener())连接的;但没有连接。我的代码未编译。

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



class text11 extends JFrame implements ActionListener{ /**
     *
     */
    private static final long serialVersionUID = 1L;



    // JFrame
    static JFrame f;



    // text area
    private static JTextArea jt;

    // main class
    public static void main(String[] args)
    {
        // create a new frame to store text field and button
        f = new JFrame("textfield");

        // create a label to display text




        // create a object of the text class
        text11 te = new text11();



        // create a text area, specifying the rows and columns
        jt = new JTextArea(" ", 20, 20);

        JPanel p = new JPanel();

        // add the text area and button to panel
        p.add(jt);

        f.add(p);
        // set the size of frame
        f.setSize(300, 300);
        jt.addKeyListener(new CustomKeyListener());

        f.show();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
         jt.addKeyListener(new CustomKeyListener());

    }



    }

class CustomKeyListener implements KeyListener{
    public void keyTyped(KeyEvent e) {
    }
    public void keyPressed(KeyEvent e) {
       if(e.getKeyCode() == KeyEvent.VK_ENTER){


           jt.setText(jt.getText() + "     sam");
       }
    }
    public void keyReleased(KeyEvent e) {
    }
 }

最佳答案

这不是最佳做法,但是您可以将jt更改为public static JTextArea jt;,然后在CustomKeyListener类中使用text11.jt进行调用

例如:text11.jt.setText(text11.jt.getText() + " sam");

10-04 17:26