在重构textarea对象中的KeyListener继承性

问题描述 投票:0回答:1

我下面的java代码想做一个keyListener的继承,问题是私有静态JTextArea jt;在类CustomKeyListener中没有被识别。问题是私有静态JTextArea jt;在CustomKeyListener类中没有被识别。我不知道我以为这2个类是通过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) {
    }   
 }
java inheritance subclass jtextarea keylistener
1个回答
0
投票

这不是最佳实践,但你可以改变 jt 将要 public static JTextArea jt; 然后在你的 CustomKeyListener 类与 text11.jt

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

© www.soinside.com 2019 - 2024. All rights reserved.