这里面最重要的还是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); //使窗体可见;
}
}
完成结果图如下: