我下面的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) {
}
}
这不是最佳实践,但你可以改变 jt
将要 public static JTextArea jt;
然后在你的 CustomKeyListener
类与 text11.jt
例如: text11.jt.setText(text11.jt.getText() + " sam");