迦瓦栈队 团队第四周项目总结
窗口界面
简单的用户界面
之前在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);
}
}
结果显示:
动作事件(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。当使用边框布局将一个组件添加到容器中时,要使用这五个常量之一