当前位置: 代码迷 >> Java相关 >> 我是超级菜鸟,请大家帮忙,改写一下这个程序,谢谢!
  详细解决方案

我是超级菜鸟,请大家帮忙,改写一下这个程序,谢谢!

热度:110   发布时间:2005-05-29 19:38:00.0
我是超级菜鸟,请大家帮忙,改写一下这个程序,谢谢!

请大家帮我把这个程序用另一种方式改写一下: 就是我想直接在public class MyButtonFrame extends Frame后接入implements ActionListener,改写后程序依然如改写前一样运行,请帮我改写一下,谢谢! import java.awt.*; import java.awt.event.*;

public class MyButtonFrame extends Frame { MyButtonPanel panel=new MyButtonPanel(); public MyButtonFrame(String s) { setTitle(s); add(panel); }

public static void main(String[] args) { MyButtonFrame frm=new MyButtonFrame("测试按钮事件"); frm.setSize(500,300); frm.setVisible(true); } }

class MyButtonPanel extends Panel { public MyButtonPanel() { Button b=new Button("蓝色"); Button g=new Button("绿色"); Button e=new Button("退出"); add(b); add(g); add(e);

MyListenerAction bAction=new MyListenerAction(Color.blue); MyListenerAction gAction=new MyListenerAction(Color.green); MyListenerAction eAction=new MyListenerAction(Color.red);

b.addActionListener(bAction); g.addActionListener(gAction); e.addActionListener(eAction); } private class MyListenerAction implements ActionListener { private Color bgColor;

public MyListenerAction(Color c) { bgColor=c; }

public void actionPerformed(ActionEvent event) { setBackground(bgColor); repaint(); if(event.getActionCommand()=="退出") System.exit(0); } } }

搜索更多相关的解决方案: 超级  

----------------解决方案--------------------------------------------------------
去掉private class MylistenerAction的东西,留下

public void actionPerformed(ActionEvent event)
  {
   setBackground(bgColor);
   repaint();
   if(event.getActionCommand()=="退出")
    System.exit(0);
  }
----------------解决方案--------------------------------------------------------
在public class MyButtonFrame extends Frame后接入implements ActionListener
只要在你 MyButtonFrame的类里面实现 ActionLi接口里面的 public void actionPerformed(ActionEvent event)方法就行了
也就是 下面写的 还有button注册监听器写 只要写 b.addActionListener(this)就行了
public class MyButtonFrame extends Frame implements ActionListener
{
  ..........
  ..........
b.addActionListener(this)
public void actionPerformed(ActionEvent event)
  {
  .......
  .......
  }
}

你写得不错 至少有点mvc设计的样子的 控制和界面分开了
----------------解决方案--------------------------------------------------------
楼上两位的东东

我都试过了

可能我的理解能力有限吧

度没成功

不知道楼主试过没有呢?
----------------解决方案--------------------------------------------------------

我看过楼主的程序之后,觉得很好,自己仿写了一段 基本上没有改什么,就是小的类名等做了替换,为什么却出现编译错误??? 请各位高手帮忙指点一二…… import java.awt.*; import java.awt.event.*;

public class bframe extends Frame{ myPanel p=new myPanel(); public bframe(String s){ setTitle(s); add(p); } public static void main(String[] args){ bframe f=new bframe("cool"); f.setSize(400,600); f.setVisible(true); } }

class myPanel extends Panel{ public myPanel(){ Button a=new Button("Bule"); Button b=new Button("Yellow"); Button c=new Button("Exit"); add(a); add(b); add(c); MyListenerAction aAction=new MyListenerAction(Color.bule); MyListenerAction bAction=new MyListenerAction(Color.yellow); MyListenerAction cAction=new MyListenerAction(Color.red); a.addActionListener(aAction); b.addActionListener(bAction); c.addActionListener(cAction); } private MyListenerAction implements ActionListener{ private Color bgColor; public MyListenerAction(Color e){ bgColor=e; } public void actionPerformed(ActionEvent event){ setBackground(bgColor); repaint(); if(event.getActionCommand()=="Exit") System.exit(0); } } } 编译提示错误为: bframe.java:39: <identifier> expected private MyListenerAction implements ActionListener{ ^ bframe.java:54: ';' expected } ^ 2 errors

E:\>javac bframe.java bframe.java:39: <identifier> expected private MyListenerAction implements ActionListener{ ^ bframe.java:54: ';' expected } ^ 2 errors

[此贴子已经被作者于2005-7-28 22:42:30编辑过]


----------------解决方案--------------------------------------------------------
这个问题希望高手给予解答啊

我看了一下午了

都没看出来问题在哪啊?

当事者迷,旁观者清啊!

多谢了,跪等!
----------------解决方案--------------------------------------------------------
临睡前,把这个帖子再顶起来

希望早上起来

能有人看到,帮我解决一下这个问题!
----------------解决方案--------------------------------------------------------
喝牛奶的熊, the corrected code: package bframe; import java.awt.*; import java.awt.event.*; public class bframe extends Frame { myPanel p=new myPanel(); public bframe(String s) { setTitle(s); add(p); } public static void main(String[] args) { bframe f=new bframe("cool"); f.setSize(400,600); f.setVisible(true); } } class myPanel extends Panel { public myPanel() { Button a=new Button("Bule"); Button b=new Button("Yellow"); Button c=new Button("Exit"); add(a); add(b); add(c); MyListenerAction aAction=new MyListenerAction(Color.blue); MyListenerAction bAction=new MyListenerAction(Color.yellow); MyListenerAction cAction=new MyListenerAction(Color.red); a.addActionListener(aAction); b.addActionListener(bAction); c.addActionListener(cAction); } private class MyListenerAction implements ActionListener { private Color bgColor; public MyListenerAction(Color e) { bgColor=e; } public void actionPerformed(ActionEvent event) { setBackground(bgColor); repaint(); if(event.getActionCommand()=="Exit") System.exit(0); } } }
----------------解决方案--------------------------------------------------------
问题终于解决了……还是自己粗心大意啊! private MyListenerAction implements ActionListener 这句竟然没打class,晕! 还有个blue竟然写成了bule!…… 以后一定注意!! kai 谢谢你,可是这个程序,前面加了package bframe;以后,就可以编译,但不能执行了! 提示如下: Exception in thread "main" java.lang.NoClassDefFoundError: bframe (wrong name: b frame/bframe) 什么原因呢? -------------------------------------------------------------------------------------------------------------------------
问题终于解决了……还是自己粗心大意啊! private MyListenerAction implements ActionListener 这句竟然没打class,晕! 还有个blue竟然写成了bule!…… 以后一定注意!!
我来借喝奶的熊的宝地点评一下。注意哦不是针对你哦喝奶的熊。你能自己发现错误很不错了。这年头菜鸟问的问题十个问题九个傻。几乎都是打字输入的错误,希望大家以后问问题先自查10遍再说,要仔仔细细的查!我总是喜欢自己解决问题,一来有成就感;二来是因为有时候有些错误只是低级错误,一方面这样的错误问了很没意义,另一方面问这样的问题不觉得丢自己的脸吗?可能网络就是这样的好处,问这样的问题不会感到丢人,要是在课堂上问这样的问题还怕被同学笑话呢~如果大家能听进去那最好,听不进那就当我是在这里疯言疯语好了。反正这些好习惯都是自己的事,提高水平也是自己的事。

[此贴子已经被tempnetbar于2005-7-30 8:34:40编辑过]


----------------解决方案--------------------------------------------------------
package bframe 说明 程序放在bframe 那个目录下

编译的方法: cd 到该目录前,  然后 javac bframe/bframe.java
执行的方法                                  java bframe/bframe
----------------解决方案--------------------------------------------------------
  相关解决方案