第二十天总结
GUI(图形用户界面)
1.java为GUI提供的对象都存在于Awt和Swing两个包中
Awt不跨平台,Swing跨平台,但是在所有平台下的界面都是一个风格
Conponent类:Container是他的一个子类,他拥有容器的特点,他的立
面可以添加组件
布局管理器:(当组件添加到容器中的时候要存在一个布局管理)
FlowLayout流式布局管理器
BorderLayout边界布局管理器(默认布局)
GridLayout网格布局管理器
CardLayout卡片布局管理器
GridBagLayout网格包布局管理器
2、是件监听机制:
组成:事件源,事件,监听器,事件处理
事件源:被触发的组件,比如说按钮
事件:如果我们在进行鼠标键盘操作的时候,那么鼠标和键盘就是事件
监听器:把事件所对应的动作都委托在监听器当中,当我们把监听器注
册到事件源当中的时候,当事件源触发的时候,监听器监听到之后,就
会触发相关的事件动作
/**
猜数字游戏窗口版
玩法:
1.每一次游戏开始前点击新游戏
2.在上面的文本行中输入小于等于100的正整数,回车或者点击右边的确
认了
3.游戏结果在下方的文本框中显示
2010.04.18凌晨
*/
import java.awt.*;
import java.awt.event.*;
import java.util.*;
class GuessNumber
{
private Frame f;//窗体
private TextField tf;//上方文本行
private Button b,b1;//新游戏按钮和确认了按钮
private TextArea ta;//下方文本框
private int number;//随机数,也就是所要猜的数
/*
窗体构造函数,生成游戏所需要的文本框
*/
GuessNumber()
{
f=new Frame("猜数字游戏");
f.setSize(290,280);
f.setLocation(510,200);
f.setResizable(false);
f.setLayout(new FlowLayout());
b1=new Button("新游戏");
f.add(b1);
tf=new TextField(20);
f.add(tf);
b=new Button("确认啦");
f.add(b);
ta=new TextArea(12,37);
ta.setText("请点击新游戏开始您的好运猜猜
猜"+"/r/n");
f.add(ta);
myEvent();
f.setVisible(true);
}
/*
整个程序的事件和监视器
*/
private void myEvent()
{
/*
新游戏按钮的监视器事件,鼠标点击新游戏产生随机
数
*/
b1.addMouseListener(new MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
Random ran=new Random();
number=ran.nextInt(100)+1;
tf.setText("");
ta.setText("请在上面文本框中输
入一百以下正整数!"+"/r/n");
}
});
/*
窗体关闭按钮控制
*/
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent
e)
{
System.exit(0);
}
});
/*
控制文本行,提示不正确的输入,同时按回车将进行
猜数字流程
*/
tf.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()
>=KeyEvent.VK_A && e.getKeyCode()<=KeyEvent.VK_Z)
{
show("错误输入","请输入
小于等于一百的正整数");
}
else if(e.getKeyCode()
==KeyEvent.VK_ENTER)
{
trans();
}
}
});
/*
用鼠标点击右边的确认了按钮也将进行猜数字流程
*/
b.addMouseListener(new MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
trans();
}
});
}
/*
猜数字的流程
*/
private void trans()
{
if (number==0)
{
show("游戏错误","输入数字前请您先点击新
游戏!");
}
else
{
String str=tf.getText();
String s_num=str.trim();
if (s_num.hashCode()==0 ||
s_num.contains(" "))
{
show("错误输入","请输入小于等于
一百的正整数");
}
else
{
int num=Integer.parseInt(s_num);
if (num>100 || num<=0)
{
show("错误输入","请输入小于等于
一百的正整数");
}
else
{
if (num>number)
{
ta.append(num+"/t"+"您
的数字大了,请重新输入%>_<%"+"/r/n");
tf.setText("");
}
else if(num<number)
{
ta.append(num+"/t"+"您
的数字小了,请重新输入%>_<%"+"/r/n");
tf.setText("");
}
else
{
show("猜对了","恭喜您,
猜中了!去买彩票吧^_^");
ta.setText("请点击新游
戏开始您的好运猜猜猜"+"/r/n");
number=0;
}
}
}
}
}
/*
弹出窗口的构建
*/
private void show(String title,String content)
{
final Dialog d1=new Dialog(f,title,true);
d1.setSize(200,100);
d1.setLocation(560,280);
d1.setLayout(new FlowLayout());
d1.setResizable(false);
Label lab1=new Label(content,Label.CENTER);
d1.add(lab1);
Button b2=new Button("确定");
d1.add(b2);
b2.addMouseListener(new MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
d1.setVisible(false);
tf.setText("");
}
});
b2.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent
e)
{
if(e.getKeyCode()
==KeyEvent.VK_ENTER)
{
d1.setVisible
(false);
tf.setText("");
}
}
});
d1.setVisible(true);
}
}
/*
用于测试程序的主函数
*/
class GuessNumberDemo
{
public static void main(String[] args)
{
GuessNumber g=new GuessNumber();
}
}