迦瓦栈队 团队第四周项目总结
2016-06-05 20:12
232 查看
窗口界面
简单的用户界面
之前在c语言或是java语言中我们仅仅是制作算法,让程序计算机代替我们实现计算过程,然而当做到游戏时,我们就不得不要考虑用户的可操作的简易性、阅读的方便性等功能了。说到可视化界面,我们就得提一提java的框架基础,实现简单的用户界面。组件和窗口
组件:是窗口内的元素,包括按钮、 按钮、复选框、标签等简单组件,以及文本框、滑块和其他复选框等,而窗口则是容纳组件的一个容器。容器分别是使用Swing包中的JWindow和JFrame类创建的,创建前需要导入javax.swing.*包。Jframe(框架窗口):这是通常意义上的窗口,它支持窗口周边的框架、标题栏,以及最小化、最大化和关闭按钮;JWindow(一种无边框窗口):没有标题栏,没有框架,只是一个空的矩形。
Frame类的主要构造方法:
JFrame():创建无标题的窗口对象;
JFrame(String s):创建一个标题名是字符串s的窗口对象。
Jlable组件显示用户不能修改的信息,这种信息可以是文本、图形或两者的组合。JTextField组件是用户可以输入单行文本的区域。创建时可以设置其宽度。Jbutton对象是一个可以单击的按钮,其标签描述了单击按钮的结果。该标签可以使文本、图像或两者的组合。JButton和其他组件一样,位于java.awt.swing包中。
JButton okButton = new JButton(“OK”);
创建好JButton等组件后。应调用add()方法将其加入到容器中:
add(okButton);
在容器中添加组件时,不需要致命组件在容器中显示的位置,组件的布局由被称为布局管理器的对象决定。最简单的布局管理器是FlowLayout类,它位于java.awt中。
要让容器使用特定不布局管理器,必须首先创建该布局管理器的对象。使用下面的语句创建FlowLayout对象:
FlowLayout fl = new FlowLayout();
创建好后,调用其setLayout()方法将其管理器同容器关联起来,该方法将布局管理器对象作为唯一的参数:
Pane.setLayout(flo);
这条语句将flo对象指定为容器pane的布局管理器。
简单的示范:
import java.awt.*; public class ChuangKou2 { public static void main(String[] args) { Frame f = new Frame("Flow Layout"); Button b1 = new Button("OK"); Button b2 = new Button("Open"); Button b3 = new Button("Close"); f.setLayout(new FlowLayout()); //f.setLayout(new FlowLayout(FlowLayout.LEFT)); //f.setLayout(new FlowLayout(FlowLayout.LEFT,40,50)); f.add(b1); f.add(b2); f.add(b3); f.setSize(300, 500); f.setVisible(true); Frame ff = new Frame("java Frame"); FlowLayout l = new FlowLayout(FlowLayout.CENTER, 20, 40); //按钮位置的设置 ff.setLayout(l); ff.setLocation(300, 400); //窗体出现在页面位置的设置 ff.setSize(300, 200); //窗体的大小设置 ff.setBackground(new Color(204, 204, 255)); for(int i = 0; i <= 7; i++) { ff.add(new Button("BUTTON")); } ff.setVisible(true); } }
结果显示:
![](https://images2015.cnblogs.com/blog/952232/201606/952232-20160605201233914-1007731611.png)
![](https://images2015.cnblogs.com/blog/952232/201606/952232-20160605201252414-1849278596.png)
#### 动作事件(ActionEvent)
上述只是简单的制作按钮界面而已,要让按钮点击起到作用,就要用到动作事件(ActionEvent),ActionEvent包含一个事件。使用举例:
public void actionPerformed(ActionEvent ae) { String str=ae.getActionCommand(); if(str.equals("开始")) { } }
监听器的使用:addKeyListener
public void addKeyListener(KeyListener l)添加指定的按键侦听器,以接收发自此组件的按键事件。如果 l 为 null,则不会抛出异常并且不执行动作。 位于包java.awt.event ,接口 KeyListener用于接收键盘事件(击键)的侦听器接口。旨在处理键盘事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象 KeyAdapter 类(仅重写有用的方法)。
然后使用组件的 addKeyListener 方法将从该类所创建的侦听器对象向该组件注册。按下、释放或键入键时生成键盘事件。然后调用侦听器对象中的相关方法并将该 KeyEvent 传递给它。
按下某个键时调用方法:
void keyPressed(KeyEvent e)。
键入某个键时调用此方法:
keyTyped(KeyEvent e)。
使用:
public void keyPressed(KeyEvent e) { int keyCode = e.getKeyCode(); if (model.running){ // 运行状态下,处理的按键 switch (keyCode) { case KeyEvent.VK_UP: model.changeDirection(SnakeModel.UP); break; case KeyEvent.VK_DOWN: model.changeDirection(SnakeModel.DOWN); break; case KeyEvent.VK_LEFT: model.changeDirection(SnakeModel.LEFT); break; case KeyEvent.VK_RIGHT: model.changeDirection(SnakeModel.RIGHT); break; case KeyEvent.VK_ADD: case KeyEvent.VK_PAGE_UP: model.speedUp(); break; case KeyEvent.VK_SUBTRACT: case KeyEvent.VK_PAGE_DOWN: model.speedDown(); break; case KeyEvent.VK_SPACE: case KeyEvent.VK_P: model.changePauseState(); break; default: } }
上述是关于贪吃蛇键入键盘上下左右键时方向的控制 。
java.awt 类 BorderLayout
这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST、CENTER。当使用边框布局将一个组件添加到容器中时,要使用这五个常量之一
相关文章推荐
- 求购买一批打折书的最低价格
- 2016 计蒜之道 初赛 第三场 百度帐号的选取方案(中等) KMP
- Firefox渗透插件—Web渗透必备工具
- centos U盘安装
- C#可扩展编程之MEF学习笔记(二):MEF的导出(Export)和导入(Import)
- [python学习] 介绍python的property,以及为什么要用setter,一个小栗子
- 矩阵 向量 求导运算
- 上机报告7-1项目一素数和回文
- 第110讲: Spark Streaming电商广告点击综合案例通过updateStateByKey等实现广告点击流量的在线更新统计
- Python之路【第一篇】:Python前世今生
- Handler-Message消息处理机制常见方法
- Linux课题实践五——字符集总结与分析
- C++ bitset类的使用与简介
- html 的学习成果
- async_schedule
- 第一次抢课经历
- web前端性能测试在线工具
- 多清楚的IO 表
- 英语短句
- lintcode : Matrix Zigzag Traversal