我是一名初学Java的学生,我编程时遇到了一个问题自己解决不了,只好求助大家,请大家指点:
作业的要求是对两个按钮实现委托类监听,使得最终的效果是:
1.如果是男生,必须由三个兴趣爱好才会被录取,
2.如果是女生,有两个或两个以上的兴趣爱好就会被录取,
下面是我的程序import java.awt.*;
import java.awt.event.*;
class MyFrame extends Frame implements ActionListener
{
Label l1,l2,l3,l4,l5;
TextField txt1,txt2;
CheckboxGroup gp=new CheckboxGroup();
Checkbox b1,b2,b3,b4,b5;
Button bt1,bt2;
Panel p1=new Panel();
Panel p2=new Panel();
Panel p3=new Panel();
Panel p4=new Panel();
Panel p5=new Panel();
Panel p6=new Panel();
public MyFrame()
{
super("JAVA程序学习");
setBackground(Color.lightGray);
setLayout(new GridLayout(6,1));
setVisible(true);
pack(); l1=new Label("学生录取情况查询",Label.CENTER);
l2=new Label("请输入你的名字:");
l3=new Label("选择性别:");
l4=new Label("选择你的兴趣爱好:");
l5=new Label("输出查询结果"); txt1=new TextField(8);
txt2=new TextField(16); b1=new Checkbox("男",gp,true);
b2=new Checkbox("女",gp,false);
b3=new Checkbox("篮球");
b4=new Checkbox("登山");
b5=new Checkbox("音乐");
bt1=new Button("提交");
bt2=new Button("重置");
bt1.addActionListener();
bt2.addActionListener();
p1.add(l1);
p2.add(l2);p2.add(txt1);
p3.add(l3);p3.add(b1);p3.add(b2);
p4.add(l4);p4.add(b3);p4.add(b4);p4.add(b5);
p5.add(bt1); p5.add(bt2);
p6.add(l5);p6.add(txt2); setSize(400,400);
add(p1); add(p2); add(p3); add(p4); add(p5);add(p6);
void actionPerformed(ActionEvent e) {
if(e.getSource()==bt1)
{
int num=0;
if(b3.getState()) num++;
if(b4.getState()) num++;
if(b5.getState()) num++;
if((b1.getState()&&num==3)||(b2.getState()&&num>=2)) txt2.setText("你被录取!");
else txt2.setText("继续努力!");
}
else
{
txt1.setText("");
txt2.setText("");
b1.setState(true);
b3.setState(false);
b4.setState(false);
b5.setState(false);
}
}
this.addWindowListener ( new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
} ) ;
}
}
public class TestMyFrame {
public static void main(String[] args){
MyFrame w=new MyFrame();
}
}
作业的要求是对两个按钮实现委托类监听,使得最终的效果是:
1.如果是男生,必须由三个兴趣爱好才会被录取,
2.如果是女生,有两个或两个以上的兴趣爱好就会被录取,
下面是我的程序import java.awt.*;
import java.awt.event.*;
class MyFrame extends Frame implements ActionListener
{
Label l1,l2,l3,l4,l5;
TextField txt1,txt2;
CheckboxGroup gp=new CheckboxGroup();
Checkbox b1,b2,b3,b4,b5;
Button bt1,bt2;
Panel p1=new Panel();
Panel p2=new Panel();
Panel p3=new Panel();
Panel p4=new Panel();
Panel p5=new Panel();
Panel p6=new Panel();
public MyFrame()
{
super("JAVA程序学习");
setBackground(Color.lightGray);
setLayout(new GridLayout(6,1));
setVisible(true);
pack(); l1=new Label("学生录取情况查询",Label.CENTER);
l2=new Label("请输入你的名字:");
l3=new Label("选择性别:");
l4=new Label("选择你的兴趣爱好:");
l5=new Label("输出查询结果"); txt1=new TextField(8);
txt2=new TextField(16); b1=new Checkbox("男",gp,true);
b2=new Checkbox("女",gp,false);
b3=new Checkbox("篮球");
b4=new Checkbox("登山");
b5=new Checkbox("音乐");
bt1=new Button("提交");
bt2=new Button("重置");
bt1.addActionListener();
bt2.addActionListener();
p1.add(l1);
p2.add(l2);p2.add(txt1);
p3.add(l3);p3.add(b1);p3.add(b2);
p4.add(l4);p4.add(b3);p4.add(b4);p4.add(b5);
p5.add(bt1); p5.add(bt2);
p6.add(l5);p6.add(txt2); setSize(400,400);
add(p1); add(p2); add(p3); add(p4); add(p5);add(p6);
void actionPerformed(ActionEvent e) {
if(e.getSource()==bt1)
{
int num=0;
if(b3.getState()) num++;
if(b4.getState()) num++;
if(b5.getState()) num++;
if((b1.getState()&&num==3)||(b2.getState()&&num>=2)) txt2.setText("你被录取!");
else txt2.setText("继续努力!");
}
else
{
txt1.setText("");
txt2.setText("");
b1.setState(true);
b3.setState(false);
b4.setState(false);
b5.setState(false);
}
}
this.addWindowListener ( new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
} ) ;
}
}
public class TestMyFrame {
public static void main(String[] args){
MyFrame w=new MyFrame();
}
}
import java.awt.event.*;class MyFrame extends Frame implements ActionListener {
private static final long serialVersionUID = 1L; Label l1, l2, l3, l4, l5; TextField txt1, txt2; CheckboxGroup gp = new CheckboxGroup(); Checkbox b1, b2, b3, b4, b5; Button bt1, bt2; Panel p1 = new Panel(); Panel p2 = new Panel(); Panel p3 = new Panel(); Panel p4 = new Panel(); Panel p5 = new Panel(); Panel p6 = new Panel(); public MyFrame() {
super("JAVA程序学习");
setBackground(Color.lightGray);
setLayout(new GridLayout(6, 1)); l1 = new Label("学生录取情况查询", Label.CENTER);
l2 = new Label("请输入你的名字:");
l3 = new Label("选择性别:");
l4 = new Label("选择你的兴趣爱好:");
l5 = new Label("输出查询结果"); txt1 = new TextField(8);
txt2 = new TextField(16); b1 = new Checkbox("男", gp, true);
b2 = new Checkbox("女", gp, false);
b3 = new Checkbox("篮球");
b4 = new Checkbox("登山");
b5 = new Checkbox("音乐");
bt1 = new Button("提交");
bt2 = new Button("重置");
bt1.addActionListener(this);
bt2.addActionListener(this);
p1.add(l1);
p2.add(l2);
p2.add(txt1);
p3.add(l3);
p3.add(b1);
p3.add(b2);
p4.add(l4);
p4.add(b3);
p4.add(b4);
p4.add(b5);
p5.add(bt1);
p5.add(bt2);
p6.add(l5);
p6.add(txt2); setSize(400, 400);
add(p1);
add(p2);
add(p3);
add(p4);
add(p5);
add(p6);
pack();
setVisible(true);
} public void actionPerformed(ActionEvent e) {
if (e.getSource() == bt1) {
int num = 0;
if (b3.getState())
num++;
if (b4.getState())
num++;
if (b5.getState())
num++;
if ((b1.getState() && num == 3) || (b2.getState() && num >= 2))
txt2.setText("你被录取!");
else
txt2.setText("继续努力!");
} else {
txt1.setText("");
txt2.setText("");
b1.setState(true);
b3.setState(false);
b4.setState(false);
b5.setState(false);
} this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
}); } public static void main(String[] args) {
new MyFrame();
}
}兄弟~~在你的基础上略加改动。你已经很接近正确的真相了,呵呵。加油。希望对你有所帮助。
使用方法时,注意参数。
另外还是使用eclipse作为编辑环境,有错误提示,用其他编辑器也行。import java.awt.*;
import java.awt.event.*;
class MyFrame extends Frame implements ActionListener
{
Label l1,l2,l3,l4,l5;
TextField txt1,txt2;
CheckboxGroup gp=new CheckboxGroup();
Checkbox b1,b2,b3,b4,b5;
Button bt1,bt2;
Panel p1=new Panel();
Panel p2=new Panel();
Panel p3=new Panel();
Panel p4=new Panel();
Panel p5=new Panel();
Panel p6=new Panel();
public MyFrame()
{
super("JAVA程序学习");
setBackground(Color.lightGray);
setLayout(new GridLayout(6,1));
setVisible(true);
pack(); l1=new Label("学生录取情况查询",Label.CENTER);
l2=new Label("请输入你的名字:");
l3=new Label("选择性别:");
l4=new Label("选择你的兴趣爱好:");
l5=new Label("输出查询结果"); txt1=new TextField(8);
txt2=new TextField(16); b1=new Checkbox("男",gp,true);
b2=new Checkbox("女",gp,false);
b3=new Checkbox("篮球");
b4=new Checkbox("登山");
b5=new Checkbox("音乐");
bt1=new Button("提交");
bt2=new Button("重置");
bt1.addActionListener(this);
bt2.addActionListener(this);
p1.add(l1);
p2.add(l2);p2.add(txt1);
p3.add(l3);p3.add(b1);p3.add(b2);
p4.add(l4);p4.add(b3);p4.add(b4);p4.add(b5);
p5.add(bt1); p5.add(bt2);
p6.add(l5);p6.add(txt2); setSize(400,400);
add(p1); add(p2); add(p3); add(p4); add(p5);add(p6);
void actionPerformed(ActionEvent e) {
if(e.getSource()==bt1)
{
int num=0;
if(b3.getState()) num++;
if(b4.getState()) num++;
if(b5.getState()) num++;
if((b1.getState()&&num==3)||(b2.getState()&&num>=2)) txt2.setText("你被录取!");
else txt2.setText("继续努力!");
}
else
{
txt1.setText("");
txt2.setText("");
b1.setState(true);
b3.setState(false);
b4.setState(false);
b5.setState(false);
}
}
this.addWindowListener ( new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
} ) ;
}
}
public class TestMyFrame {
public static void main(String[] args){
MyFrame w=new MyFrame();
}
}
class Game extends Frame imlement ActionListener
{ Button bt;
Label lb;
TextField tf;
Panel pl;
int x=int((Math.random()*9))+1;//这里我老是出错,但又找不出原因,帮我看看吧
int y=int((Math.random()*9))+1;
Game()
{ bt=new Button("检查");
lb=new Label("x*y=");
tf=new TextField(10);
pl=new Panel();
pl.add(bt);pl.add(lb);pl.setLayout(new FlowLayout());
bt.addActionListner(this);
add(tf);add(pl);
setBounds(100,100,150,150);
setVisible(true);
setLayout(new GridLayout());
}
public void actionPerformed(ActionEvent e)
{ if(e.getSource()==tf)
{ if(tf.getText()==lb.getText())
{ lb.setText("对");
}
else
{ lb.setText("错");
}
}
}
}
public class Experiment_9
{ public static voic main(String args[])
{ Game f=new Game()
}
}
比如,第一句implements才对啊,中间的addActionListener,你丢掉了一个e,呵呵,自己再查查。
至于 int x=int((Math.random()*9))+1;这个肯定不对啊。这一行你应该是要做强制转化的,强转的语法是:(type)value
所以这里应该是int x = ((int) (Math.random() * 9)) + 1;
或者int x = (int)(((Math.random() * 9)) + 1);从double类型转化成为int类型。具体是哪一个看你的需求了。顺便,actionPerformed里面,你给bt加的监听,那么e.getSource()肯定不是tf呵……