我下面的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");