java内部类的问题
关于内部类的问题:我在类button里写了一个moniter的监听器内部类,因为要监听按钮所以要new一个moniter,但是如果我把moniter类放在moniter m = new moniter();后面则会出现错误,如图所示,如果我把moniter放在moniter m = new moniter();之前则会编译成功,我有点纳闷,这个有顺序问题吗????没分了,希望好心的大虾帮帮忙……
源代码如下:
import java.awt.*;
import java.awt.event.*;
public class text{
public static void main(String[] args){
Frame f = new Frame();
Panel p = new Panel();
button b = new button();
p.setLayout(new BorderLayout());
p.add(b.p1,BorderLayout.NORTH);
b.setcolor();
f.add(p);
f.pack();
f.setVisible(true);
}
}
class button{
class moniter implements ActionListener{
public void actionPerformed(ActionEvent e){
System.out.print(e.getActionCommand());
}
}
Panel p1 = new Panel();
moniter m = new moniter();
void setcolor(){
p1.setLayout(new GridLayout(2,2));
Button b1 = new Button("1");
Button b2 = new Button("2");
Button b3 = new Button("3");
Button b4 = new Button("4");
b1.addActionListener(m);
b2.addActionListener(m);
b3.addActionListener(m);
b4.addActionListener(m);
p1.add(b1);
p1.add(b2);
p1.add(b3);
p1.add(b4);
}
}
初学者,还请大家多赐教。就是moniter这个东西的位置一定要在那句话前面,否则就是编译失败……请大虾们看下。还有我用的是ultraedit。没用IDE。
答案:我试了一下,放在什么位置都没有问题。
你的代码缩进格式弄得很差,估计是不小心放错位置了吧。。。,有可能你不小心把class moniter放到 方法 void setcolor()内部了吧。。。
如果你如果想写内部类,不如写成匿名内部类:
。。。前面代码略。。。
class button{
Panel p1 = new Panel();
ActionListener m = new ActionListener() {
public void actionPerformed(ActionEvent e){
System.out.print(e.getActionCommand());
}
};
void setcolor(){
p1.setLayout(new GridLayout(2,2));
。。。后面代码略。。。
这才是好的写法。
另外,尽量面向interface编程,程序的可扩展性才好,耦合性也会低。
上一个:Java难题:谁能写出代码?
下一个:我想知道酷派S180也能有JAVA吗,刷机是详细怎么做呢?谢了!!!