import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class cwp2
{
public static void main(String[] args)
{
MyFrame F1 = new MyFrame();
}
}
class MyFrame extends JFrame
{
MyFrame()
{
//main window
setSize(480,300);
MyPanel mainpanel = new MyPanel();
mainpanel.setLocation(300,300);
add(mainpanel);
setTitle("Super Screen & Keyboard");
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setVisible(true);
}
}
class MyPanel extends JPanel implements ActionListener
{
private JTextArea screen;
private JButton spacebar,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;
MyPanel()
{
//text screen
JTextArea screen = new JTextArea();
screen.setColumns(40);
screen.setRows(9);
screen.setWrapStyleWord(true);
screen.setLineWrap(true);
//buttons and actions
spacebar = new JButton("spacebar");
spacebar.addActionListener(this);
a = new JButton("a");
a.addActionListener(this);
b = new JButton("b");
b.addActionListener(this);
c = new JButton("c");
c.addActionListener(this);
d = new JButton("d");
d.addActionListener(this);
e = new JButton("e");
e.addActionListener(this);
f = new JButton("f");
f.addActionListener(this);
g = new JButton("g");
g.addActionListener(this);
h = new JButton("h");
h.addActionListener(this);
i = new JButton("i");
i.addActionListener(this);
j = new JButton("j");
j.addActionListener(this);
k = new JButton("k");
k.addActionListener(this);
l = new JButton("l");
l.addActionListener(this);
m = new JButton("m");
m.addActionListener(this);
n = new JButton("n");
n.addActionListener(this);
o = new JButton("o");
o.addActionListener(this);
p = new JButton("p");
p.addActionListener(this);
q = new JButton("q");
q.addActionListener(this);
r = new JButton("r");
r.addActionListener(this);
s = new JButton("s");
s.addActionListener(this);
t = new JButton("t");
t.addActionListener(this);
u = new JButton("u");
u.addActionListener(this);
v = new JButton("v");
v.addActionListener(this);
w = new JButton("w");
w.addActionListener(this);
x = new JButton("x");
x.addActionListener(this);
y = new JButton("y");
y.addActionListener(this);
z = new JButton("z");
z.addActionListener(this);
add(q);
add(w);
add(e);
add(r);
add(t);
add(y);
add(u);
add(i);
add(o);
add(p);
add(a);
add(s);
add(d);
add(f);
add(g);
add(h);
add(j);
add(k);
add(l);
add(z);
add(x);
add(c);
add(v);
add(b);
add(n);
add(m);
add(spacebar);
add(screen);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == spacebar)
{
screen.append(" ");
}
else
{
screen.append(e.getSource.getActionCommand());
}
}
当我按下按钮时,我在命令提示符下收到错误消息。
答案 0 :(得分:1)
这是错误的:
e.getSource.getActionCommand()
getSource()
方法返回Object类型的对象,而Object没有getActionCommand()
方法。
只是
e.getActionCommand()
由于e是一个ActionEvent变量,而且这种类型实际上有这种方法。
建议:下次遇到类似的问题时,请显示所有完整的错误或异常消息,并在评论中注明哪一行会抛出它。
修改
您的新问题是由于阴影屏幕变量造成的。
您的代码:
class MyPanel extends JPanel implements ActionListener {
private JTextArea screen; // screen declared here
private JButton spacebar,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;
MyPanel() {
//text screen
JTextArea screen = new JTextArea(); // but re-declared here!
这意味着您在构造函数中初始化的屏幕变量是局部变量,而不是在类中声明的字段。
这可以通过不重新声明变量来解决:
class MyPanel extends JPanel implements ActionListener {
private JTextArea screen; // screen declared here
private JButton spacebar,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;
MyPanel() {
//text screen
// JTextArea screen = new JTextArea(); // but re-declared here!
screen = new JTextArea(); // note the difference?