当前位置:编程学习 > JAVA >>

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吗,刷机是详细怎么做呢?谢了!!!

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,