这里面最重要的还是ActionListener接口,虽然做的东西很没用,应付作业的而已,哈哈哈
第一步,引用需要的包;
import java.awt.*; //继承JFrame类需要该包; import java.awt.event.*; //设置panel需要该包; import javax.swing.*; //涉及触发事件都需要该包;第二步,定义一个窗口类,并实现ActionListener接口,把需要的组件定义放到类里;
public class work11 extends JFrame implements ActionListener{ //定义一个窗口类,该类实现ActionListener接口; JButton jiandao,shitou,bu,clear; //把JButton组件定义放到类里面,方便其他函数调用; JPanel pane12,panel1; //把JPanel组件定义放到类里面,方便其他函数调用; JLabel label; //把JLabel组件定义放到类里面,方便其他函数调用;第三步,设置窗体。
public work11() { setTitle("窗体"); //设置窗体标题; setLocation(250,250); //设置窗体左上顶点坐标; setSize(300,300); //设置窗体大小;第四步,根据需求建立对象,这里只需要4个JButton对象,2个JPanel对象,1个JLabel对象;
panel1 =new JPanel(); //添加一个JPanel对象,名为panel1,方便布局; panel1.setBackground(Color.yellow); //设置panel1颜色为黄色; shitou = new JButton("石头"); //添加一个JButton对象,名为shitou; jiandao =new JButton("剪刀"); //添加一个JButton对象,名为jiandao; bu = new JButton("布"); //添加一个JButton对象,名为bu; clear = new JButton("清空"); //添加一个JButton对象,名为clear;(本次实验创建了四个JButton对象,往后实验根据实际需求创建); pane12=new JPanel(); //添加一个新的JPanel对象,名为panel2; pane12.setBackground(Color.green); //设置panel2颜色为绿色; label =new JLabel("选择剪刀、石头、布开始游戏"); //新建一个JLabel对象,名为label;第五步,给所有JButton对象添加事件约束;
shitou.addActionListener(this); //给shitou添加事件约束; bu.addActionListener(this); //给bu添加事件约束; jiandao.addActionListener(this); //给jiandao添加事件约束; clear.addActionListener(this); //给clear添加事件约束;(总的来说,把所有JButton对象都添加事件约束);第六步,把所有新添加的对象都逐次放进窗体中,例如下面,先放进组件类里面,然后再把组件放进窗体中,放置位置可以自定义;
panel1.add(shitou); //把shitou放进panel1中; panel1.add(jiandao); //把jiandao放进panel1中; panel1.add(bu); //把bu放进panel1中; panel1.add(clear); //把clear放进panel1中; pane12.add(label); //把label放进panel2中; add(panel1,BorderLayout.NORTH); //把panel1添加到窗体的北面; add(pane12,BorderLayout.CENTER); //把panel2添加到窗体的中间; }第七步,定义一个ActionListener接口方法,使得按下按钮后执行方法里的代码;
public void actionPerformed(ActionEvent e) { //定义一个ActionListener接口方法,当按下按钮就会调用里面的方法,可以称为事件响应器; if(e.getSource()==shitou) { //如果你按下的是shitou按键时,就会执行以下操作; int i=((int)(Math.random()*10))%3; //定义一个int型变量i,利用Math.random()函数获取随机数,因为*10所以随机数区间为[0,10),最后强制转换为int型,再除3取余,最后的赋值给i; switch(i) //i为0时就执行case 0操作,以此类推; { case 0 :label.setText("你出石头,电脑出石头,平局!");break; //当i=0时,执行后续操作,到break结束;(必须要添加break,不然会一直执行下去); case 1 :label.setText("你出石头,电脑出剪子,恭喜你赢了!");break; //当i=1时,与上同理; case 2 :label.setText("你出石头,电脑出布,很遗憾你输了!");break; //当i=2时,与上同理; }} else if (e.getSource()==bu) { //如果你按下的是bu按键时,与上同理; int i=((int)(Math.random()*10))%3; switch(i) { case 0 :label.setText("你出布,电脑出布,平局!");break; case 1 :label.setText("你出布,电脑出石头,恭喜你赢了!");break; case 2 :label.setText("你出布,电脑出剪刀,很遗憾你输了!");break; }} else if (e.getSource()==jiandao) { //当你按下jiandao按键时,与上同理; int i=((int)(Math.random()*10))%3; switch(i) { case 0 :label.setText("你出剪刀,电脑出剪刀,平局!");break; case 1 :label.setText("你出剪刀,电脑出布,恭喜你赢了!");break; case 2 :label.setText("你出剪刀,电脑出石头,很遗憾你输了!");break; }} else if(e.getSource()==clear) //当你按下clear按键时,直接输出label.setText(); { label.setText("选择剪刀、石头、布开始游戏"); } }第八步,添加主函数,进行测试;
public static void main(String agrs[]) { //添加一个主函数,对窗体显示情况进行测试; work11 frame =new work11(); //初始化窗体对象; frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体关闭按钮; frame.setVisible(true); //使窗体可见; } }完成结果图如下: