对着thinking in java敲得一段AWT代码。
//Menu1.java
import java.awt.*;
public class Menu1 extends Frame {
String[] flavors={
"Chocolate","Strawberry",
"Vanilla Fudge Swirl","Mint Chip",
"Mocha Almond Fudge","Rum Raisin",
"Praline Cream","Mud pie"
};
TextField t=new TextField("No flavor",30);
MenuBar mb1=new MenuBar();
//MenuBar 类封装绑定到框架的菜单栏的平台概念。为了将该菜单栏与 Frame 对象关联,可以调用该框架的 setMenuBar 方法。
Menu f=new Menu("File");
Menu m=new Menu("Flavors");
Menu s=new Menu("Safety");
CheckboxMenuItem[] safety={
new CheckboxMenuItem("Guard"),
new CheckboxMenuItem("Hide")
};
MenuItem[] file={
new MenuItem("Open"),
new MenuItem("Exit")
};
MenuBar mb2=new MenuBar();
Menu fooBar=new Menu("fooBar");
MenuItem[] other={
new MenuItem("Foo"),
new MenuItem("Bar"),
new MenuItem("Baz")
};
Button b=new Button("Seap Menus");
public Menu1(){
for(int i=0;i<flavors.length;i++){
m.add(new MenuItem(flavors[i]));
if((i+1)%3==0){
m.addSeparator();//将一个分隔线或连字符添加到菜单的当前位置。
}
}
for(int i=0;i<safety.length;i++){
s.add(safety[i]);
}
f.add(s); //将safety这个菜单,加到file里面
for(int i=0;i<file.length;i++){
f.add(file[i]);
}
mb1.add(f);
mb1.add(m);
setMenuBar(mb1);
t.setEditable(false);
add("Center",t);
add("North",b);
for(int i=0;i<other.length;i++){
fooBar.add(other[i]);
}
mb2.add(fooBar);
}
public boolean handleEvent(Event evt){
if(evt.id==Event.WINDOW_DESTROY){
System.exit(0);
}
else
return super.handleEvent(evt);
return true;
}
public boolean action(Event evt, Object arg){
if(evt.target.equals(b)){
MenuBar m=getMenuBar();
if(m==mb1){
setMenuBar(mb2);
}
else if(m==mb2){
setMenuBar(mb1);
}
}
else if(evt.target instanceof MenuItem){
if(arg.equals("Open")){
String s=t.getText();
boolean chosen=false;
for(int i=0;i<flavors.length;i++){
if(s.equals(flavors[i])){
chosen=true;
}
}
if(!chosen){
t.setText("Choose a flavor first!");
}
else
t.setText("Opening"+s+".Mmm,mm!");
}
else if(evt.target.equals(file[1])){
System.exit(0);
}
else if(evt.target.equals(safety[0])){
t.setText("Guard the Ice Cream!"+"Guarding is"+safety[0].getState());
}
else if(evt.target.equals(safety[1])){
t.setText("Hide the Ice Cram!"+"Is it cold?"+safety[1].getState());
}
else
t.setText(arg.toString());
}
else
return super.action(evt, arg);
return true;
}
public static void main(String[] args){
Menu1 f =new Menu1();
f.resize(300,200);
f.show();
}
}第一个问题:
在这段代码中,
public boolean handleEvent(Event evt){
if(evt.id==Event.WINDOW_DESTROY){
System.exit(0);
}
else
return super.handleEvent(evt);
return true;
}
一定要加么?
第二个问题
if(evt.id==Event.WINDOW_DESTROY){
System.exit(0);
是在什么时候用的,是不是只在对话框和菜单中才需要添加的。
第三个问题
还有handleEvent和action到底有什么区别?handleEvent只是action的一个补充么?
最后一个,不知道哪路大神能给个联系方式,能平时指导下小弟编程的,我将感激涕零,三跪九叩,天天敬香。本人属于那种一点不通,再点还是不通,脑容量不大,却喜欢乱想东西的,(额,今天不是情人节了,不用担心这是找男人,甚至是女人。不过有女人的话那是再好不过了)要是哪位不嫌弃就顺手牵走吧,还是挺听话的,叫我上床绝不下床,加我脱裤绝不脱衣。还可以暖床,喂孩子。咳咳。垃圾话就这么多了,重点是,找师傅啊!!!!
//Menu1.java
import java.awt.*;
public class Menu1 extends Frame {
String[] flavors={
"Chocolate","Strawberry",
"Vanilla Fudge Swirl","Mint Chip",
"Mocha Almond Fudge","Rum Raisin",
"Praline Cream","Mud pie"
};
TextField t=new TextField("No flavor",30);
MenuBar mb1=new MenuBar();
//MenuBar 类封装绑定到框架的菜单栏的平台概念。为了将该菜单栏与 Frame 对象关联,可以调用该框架的 setMenuBar 方法。
Menu f=new Menu("File");
Menu m=new Menu("Flavors");
Menu s=new Menu("Safety");
CheckboxMenuItem[] safety={
new CheckboxMenuItem("Guard"),
new CheckboxMenuItem("Hide")
};
MenuItem[] file={
new MenuItem("Open"),
new MenuItem("Exit")
};
MenuBar mb2=new MenuBar();
Menu fooBar=new Menu("fooBar");
MenuItem[] other={
new MenuItem("Foo"),
new MenuItem("Bar"),
new MenuItem("Baz")
};
Button b=new Button("Seap Menus");
public Menu1(){
for(int i=0;i<flavors.length;i++){
m.add(new MenuItem(flavors[i]));
if((i+1)%3==0){
m.addSeparator();//将一个分隔线或连字符添加到菜单的当前位置。
}
}
for(int i=0;i<safety.length;i++){
s.add(safety[i]);
}
f.add(s); //将safety这个菜单,加到file里面
for(int i=0;i<file.length;i++){
f.add(file[i]);
}
mb1.add(f);
mb1.add(m);
setMenuBar(mb1);
t.setEditable(false);
add("Center",t);
add("North",b);
for(int i=0;i<other.length;i++){
fooBar.add(other[i]);
}
mb2.add(fooBar);
}
public boolean handleEvent(Event evt){
if(evt.id==Event.WINDOW_DESTROY){
System.exit(0);
}
else
return super.handleEvent(evt);
return true;
}
public boolean action(Event evt, Object arg){
if(evt.target.equals(b)){
MenuBar m=getMenuBar();
if(m==mb1){
setMenuBar(mb2);
}
else if(m==mb2){
setMenuBar(mb1);
}
}
else if(evt.target instanceof MenuItem){
if(arg.equals("Open")){
String s=t.getText();
boolean chosen=false;
for(int i=0;i<flavors.length;i++){
if(s.equals(flavors[i])){
chosen=true;
}
}
if(!chosen){
t.setText("Choose a flavor first!");
}
else
t.setText("Opening"+s+".Mmm,mm!");
}
else if(evt.target.equals(file[1])){
System.exit(0);
}
else if(evt.target.equals(safety[0])){
t.setText("Guard the Ice Cream!"+"Guarding is"+safety[0].getState());
}
else if(evt.target.equals(safety[1])){
t.setText("Hide the Ice Cram!"+"Is it cold?"+safety[1].getState());
}
else
t.setText(arg.toString());
}
else
return super.action(evt, arg);
return true;
}
public static void main(String[] args){
Menu1 f =new Menu1();
f.resize(300,200);
f.show();
}
}第一个问题:
在这段代码中,
public boolean handleEvent(Event evt){
if(evt.id==Event.WINDOW_DESTROY){
System.exit(0);
}
else
return super.handleEvent(evt);
return true;
}
一定要加么?
第二个问题
if(evt.id==Event.WINDOW_DESTROY){
System.exit(0);
是在什么时候用的,是不是只在对话框和菜单中才需要添加的。
第三个问题
还有handleEvent和action到底有什么区别?handleEvent只是action的一个补充么?
最后一个,不知道哪路大神能给个联系方式,能平时指导下小弟编程的,我将感激涕零,三跪九叩,天天敬香。本人属于那种一点不通,再点还是不通,脑容量不大,却喜欢乱想东西的,(额,今天不是情人节了,不用担心这是找男人,甚至是女人。不过有女人的话那是再好不过了)要是哪位不嫌弃就顺手牵走吧,还是挺听话的,叫我上床绝不下床,加我脱裤绝不脱衣。还可以暖床,喂孩子。咳咳。垃圾话就这么多了,重点是,找师傅啊!!!!
最后那章关于AWT和Swing的,你就别看啦
Swing也别看了
Swing也别看了那我现在想弄个界面。应该看啥书呢。还有对于读thinking in java这本书,应该怎么读呢?哪些可以不看啊,哪些要重点看看
搞这东西纯粹是浪费时间!那你倒是给我指条明路好么。。
多用点时间学习集合类呀,反射呀,泛型呀什么的,觉得都学会了就转战web方面吧!
你要真想学swing没啥,不过想清楚哈
这东西用的公司比较少哈
搞这东西纯粹是浪费时间!那你倒是给我指条明路好么。。
多用点时间学习集合类呀,反射呀,泛型呀什么的,觉得都学会了就转战web方面吧!
你要真想学swing没啥,不过想清楚哈
这东西用的公司比较少哈那我平时弄个小程序什么的。总得弄个界面的吧。
搞这东西纯粹是浪费时间!那你倒是给我指条明路好么。。
多用点时间学习集合类呀,反射呀,泛型呀什么的,觉得都学会了就转战web方面吧!
你要真想学swing没啥,不过想清楚哈
这东西用的公司比较少哈那我平时弄个小程序什么的。总得弄个界面的吧。
HTML的页面比Swing的难多了
弄好了更赚钱的
搞这东西纯粹是浪费时间!那你倒是给我指条明路好么。。
多用点时间学习集合类呀,反射呀,泛型呀什么的,觉得都学会了就转战web方面吧!
你要真想学swing没啥,不过想清楚哈
这东西用的公司比较少哈那我平时弄个小程序什么的。总得弄个界面的吧。
HTML的页面比Swing的难多了
弄好了更赚钱的刚上手的小白,还没毕业,下半年大三。(不过在大学,那老师教的都是些什么啊!!!)还想不到挣钱什么的。话说,你对web情有独钟啊,其实我现在对什么方面的什么都不知道,能不能给点具体的说法?
Swing也别看了那我现在想弄个界面。应该看啥书呢。还有对于读thinking in java这本书,应该怎么读呢?哪些可以不看啊,哪些要重点看看
在网上搜一个学习线路图吧,可以避免走很多弯路
搞这东西纯粹是浪费时间!那你倒是给我指条明路好么。。
多用点时间学习集合类呀,反射呀,泛型呀什么的,觉得都学会了就转战web方面吧!
你要真想学swing没啥,不过想清楚哈
这东西用的公司比较少哈那我平时弄个小程序什么的。总得弄个界面的吧。
HTML的页面比Swing的难多了
弄好了更赚钱的
感谢各位的回复,虽然答得和问题没关系但是也和我说了许多发展方向。不过我决定还是先把swing给看了,毕竟刚开始学。虽然不实用,但应该还是有存在的道理。至于之后的学习,会根据需求来学。(虽然提出的建议很好,但是不在一个层面上起手就用高级的东西不能真的了解,还是慢慢学吧。)还是再次谢谢大家的回复。
建议楼主去下个swing项目源码看看,自己再改改。
点击右上角关闭按钮只要添加这句话就可以了
setDefaultCloseOperation(EXIT_ON_CLOSE);
菜单关闭按钮就直接试用System.exit(0);
要隐藏什么的可以用this.setVisible(false);
基本上是这样了
点击右上角关闭按钮只要添加这句话就可以了
setDefaultCloseOperation(EXIT_ON_CLOSE);
菜单关闭按钮就直接试用System.exit(0);
要隐藏什么的可以用this.setVisible(false);
基本上是这样了这个是不是只是在Frame中才用的,用来关闭这个框的。如果是extends Applet就不用使用这个语句了
点击右上角关闭按钮只要添加这句话就可以了
setDefaultCloseOperation(EXIT_ON_CLOSE);
菜单关闭按钮就直接试用System.exit(0);
要隐藏什么的可以用this.setVisible(false);
基本上是这样了这个是不是只是在Frame中才用的,用来关闭这个框的。如果是extends Applet就不用使用这个语句了我没用过appletJFrame和Frame是一样的额,现在也没谁用Frame了
点击右上角关闭按钮只要添加这句话就可以了
setDefaultCloseOperation(EXIT_ON_CLOSE);
菜单关闭按钮就直接试用System.exit(0);
要隐藏什么的可以用this.setVisible(false);
基本上是这样了这个是不是只是在Frame中才用的,用来关闭这个框的。如果是extends Applet就不用使用这个语句了我没用过appletJFrame和Frame是一样的额,现在也没谁用Frame了额,这个我知道,但是因为thinking in java的jdk是1.0和1.1的所以好多都不用了,不过swing还是基于awt的。只是做了些升级