import java.awt.*;
import java.awt.event.*;
public class mm extends Frame implements ActionListener,ItemListener //extends Frame 用在下边哪句?
{
TextField srm=new TextField();
MenuBar mb=new MenuBar();
Menu m1=new Menu("Edit");
Menu m2=new Menu("paster");
MenuItem item=new MenuItem("cut");
CheckboxMenuItem chbox=new CheckboxMenuItem("copy");
MenuItem exit =new MenuItem("exit");
mm()
{
setTitle("菜单窗口");
setSize(300,200);
add(srm);
mb.add(m1);
m1.add(m2);
chbox.setState(true);
m1.add(item);
m1.add(chbox);
m1.addSeparator();
m1.add(exit);
m2.add("全部粘贴");
m2.add("部分粘贴");
item.addActionListener(this); //这里this指代什么?
chbox.addItemListener(this);
exit.addActionListener(this);
setMenuBar(mb);
show();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==exit) //这里很不理解:item和exit,都是addActionListener,JVM怎么知道? System.exit(0);
else
srm.setText(e.getActionCommand()+" was opened");
}
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()==chbox)
if(chbox.getState())
srm.setText(chbox.getLabel()+"被选中");
else
srm.setText(chbox.getLabel()+"被取消");
}
public static void main(String args[])
{
new mm();
}
}
import java.awt.event.*;
public class mm extends Frame implements ActionListener,ItemListener //extends Frame 用在下边哪句?
{
TextField srm=new TextField();
MenuBar mb=new MenuBar();
Menu m1=new Menu("Edit");
Menu m2=new Menu("paster");
MenuItem item=new MenuItem("cut");
CheckboxMenuItem chbox=new CheckboxMenuItem("copy");
MenuItem exit =new MenuItem("exit");
mm()
{
setTitle("菜单窗口");
setSize(300,200);
add(srm);
mb.add(m1);
m1.add(m2);
chbox.setState(true);
m1.add(item);
m1.add(chbox);
m1.addSeparator();
m1.add(exit);
m2.add("全部粘贴");
m2.add("部分粘贴");
item.addActionListener(this); //这里this指代什么?
chbox.addItemListener(this);
exit.addActionListener(this);
setMenuBar(mb);
show();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==exit) //这里很不理解:item和exit,都是addActionListener,JVM怎么知道? System.exit(0);
else
srm.setText(e.getActionCommand()+" was opened");
}
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()==chbox)
if(chbox.getState())
srm.setText(chbox.getLabel()+"被选中");
else
srm.setText(chbox.getLabel()+"被取消");
}
public static void main(String args[])
{
new mm();
}
}
楼主【sure2003】截止到2008-07-12 09:12:37的历史汇总数据(不包括此帖):
发帖的总数量:222 发帖的总分数:9697 每贴平均分数:43
回帖的总数量:182 得分贴总数量:3 回帖的得分率:1%
结贴的总数量:218 结贴的总分数:9617
无满意结贴数:2 无满意结贴分:50
未结的帖子数:4 未结的总分数:80
结贴的百分比:98.20 % 结分的百分比:99.18 %
无满意结贴率:0.92 % 无满意结分率:0.52 %
值得尊敬
setSize(300,200);
add(srm);这三行理解不?其实是
this.setTitle("菜单窗口");
this.setSize(300,200);
this.add(srm);item.addActionListener(this); //这里this指代什么?
chbox.addItemListener(this);
exit.addActionListener(this);这几个地方的this和上面的一样 你这个类implements ActionListener,ItemListener
所以可以传this进去这段程序很别扭
今天我老三心情好,就跟你再谈谈
1、要遵守编码规范,类名首字母要大写,类的名字要有实际意义,要让别人能通过类名知道你这个类是干嘛用的,你这个类的名字MM有什么意义呢,又有谁会一看这个类名就知道你这是个Frame,所以建议你这个类名最好改为MyFrame之类的,反正让人一看就知道你这是个Frame就行了
2、若没有外部调用,类中的字段最好声明成private,这个我已经这么改了
3、再重申一次,尽量使用Swing组件,AWT组件已经过时,所以你这个类最好extends JFrame
4、条件判断、循环、switch的代码最好加上花括号{},让代码结构清晰,读起来方便的多,好好看看我给你改的,反正尽量多使用花括号,比如try catch之类的地方都用上
5、若没有特殊需求,构造方法最好用public
基本上就这些,主要还是代码格式,要让读代码的人看着你这个代码爽,不要让别个一看就头大
import java.awt.CheckboxMenuItem;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;public class MM extends Frame implements ActionListener, ItemListener // extends Frame用在下边哪句?
{
//你这个问题问的太牛B了,建议还是多看一下书,搞清楚extends到底是什么意思
//这里我大概说一下,extends可以理解为复制,比如这个类extends Frame,那就是把Frame里的所以代码复制过来了
//上面只是一个形象的解释,规范一点说,你extends了Frame,就说明你这个类本身就是个Frame,你这个里面做了一些扩展而已,
//Frame类里所有的public和protected字段或方法都可以在这个类里面直接调用,比如setTitle("菜单窗口");,这里的
//setTitle方法就是Frame类里的,因为你extends Frame,所以这个方法可以直接调用
//这个是一个序列化字段,估计你一时半会用不到,就不解释了,Eclipse里检测到没有该字段的时候会报警告
//看着不爽,所以就加上了,值是Eclipse自动计算的
private static final long serialVersionUID = 1423406072491093515L; private TextField srm = new TextField(); private MenuBar mb = new MenuBar(); private Menu m1 = new Menu("Edit"); private Menu m2 = new Menu("paster"); private MenuItem item = new MenuItem("cut"); private CheckboxMenuItem chbox = new CheckboxMenuItem("copy"); private MenuItem exit = new MenuItem("exit"); //若没有特殊需求,构造方法最好声明成public
public MM()
{
//下面三行的方法都是Frame类里的,因为你extends Frame,所以可以直接使用,具体的上面已经说了
//其实可以这三行可以改成this.setTitle("菜单窗口");this.setSize(300, 200);this.add(srm);
//结合下面的注释,再好好理解一下this吧
setTitle("菜单窗口");
setSize(300, 200);
add(srm);
mb.add(m1);
m1.add(m2);
chbox.setState(true);
m1.add(item);
m1.add(chbox);
m1.addSeparator();
m1.add(exit);
m2.add("全部粘贴");
m2.add("部分粘贴");
//这里的this就是这个类本身,如果你是这个类,那这个this就是你自己
item.addActionListener(this); // 这里this指代什么?
chbox.addItemListener(this);
exit.addActionListener(this);
//这两行与前面三行同样的道理,都是Frame里的方法
setMenuBar(mb);
//不要使用过时的方法,show()早已过时,建议使用高版本的JDK,最好找个IDE
//好习惯要从一开始就养好,免得以后写的代码让人BS
setVisible(true); //show();
} public void actionPerformed(ActionEvent e)
{
//你完全没搞清楚你这个if是什么意思
//e.getSource()的意思就是获取事件源,也就是获取到底这个事件是由哪个组件引发的
//这个if的意思就是如果这个运作是由exit引发的
if(e.getSource() == exit) //这里很不理解:item和exit,都是addActionListener,JVM怎么知道?
{
System.exit(0);
}
else
{
srm.setText(e.getActionCommand() + " was opened");
}
} public void itemStateChanged(ItemEvent e)
{
//这一行我不解释应该可以了吧
if(e.getSource() == chbox)
{
if(chbox.getState())
{
srm.setText(chbox.getLabel() + "被选中");
}
else
{
srm.setText(chbox.getLabel() + "被取消");
}
}
} public static void main(String args[])
{
new MM();
}
}
setSize(300,200);//设置窗口大小
add(srm);//把文本域加到窗口里面去
setMenuBar(mb);//设置菜单栏
show();//让这个窗口是可以被看见,这个方法有点过时了,还是用setVisible(true)的好,import java.awt.*;
import java.awt.event.*;
public class mm extends Frame implements ActionListener,ItemListener //extends Frame 用在下边哪句?用到的是在frame里面的方法
{
TextField srm=new TextField();
MenuBar mb=new MenuBar();
Menu m1=new Menu("Edit");
Menu m2=new Menu("paster");
MenuItem item=new MenuItem("cut");
CheckboxMenuItem chbox=new CheckboxMenuItem("copy");
MenuItem exit =new MenuItem("exit");
mm()
{
setTitle("菜单窗口");
setSize(300,200);
add(srm);
mb.add(m1);
m1.add(m2);
chbox.setState(true);
m1.add(item);
m1.add(chbox);
m1.addSeparator();
m1.add(exit);
m2.add("全部粘贴");
m2.add("部分粘贴");
item.addActionListener(this); //this指的是发事件发到ActionListener的方法里面去
chbox.addItemListener(this);
exit.addActionListener(this);
setMenuBar(mb);
show();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==exit) System.exit(0); //这里很不理解:item和exit,都addActionListener,JVM怎么知道?就是用this告诉它的。
else srm.setText(e.getActionCommand()+" was opened");
}
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()==chbox)
if(chbox.getState())
srm.setText(chbox.getLabel()+"被选中");
else
srm.setText(chbox.getLabel()+"被取消");
}
public static void main(String args[])
{
new mm();
}
}
import java.awt.event.*;
public class mm extends Frame implements ActionListener,ItemListener //extends Frame 用在下边哪句?用到的是在frame里面的方法
{
TextField srm=new TextField();
MenuBar mb=new MenuBar();
Menu m1=new Menu("Edit");
Menu m2=new Menu("paster");
MenuItem item=new MenuItem("cut");
CheckboxMenuItem chbox=new CheckboxMenuItem("copy");
MenuItem exit =new MenuItem("exit");
mm()
{
setTitle("菜单窗口");
setSize(300,200);
add(srm);
mb.add(m1);
m1.add(m2);
chbox.setState(true);
m1.add(item);
m1.add(chbox);
m1.addSeparator();
m1.add(exit);
m2.add("全部粘贴");
m2.add("部分粘贴");
item.addActionListener(this); //this指的是发事件发到ActionListener的方法里面去
chbox.addItemListener(this);
exit.addActionListener(this);
setMenuBar(mb);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==exit) System.exit(0); //这里很不理解:item和exit,都是addActionListener,JVM怎么知道?就是用this告诉它的。
else srm.setText(e.getActionCommand()+" was opened");
}
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()==chbox)
if(chbox.getState())
srm.setText(chbox.getLabel()+"被选中");
else
srm.setText(chbox.getLabel()+"被取消");
}
public static void main(String args[])
{
new mm();
}
}没发过代码,再发次看看,汗