迦瓦栈队 团队第四周项目总结

窗口界面

简单的用户界面

之前在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。当使用边框布局将一个组件添加到容器中时,要使用这五个常量之一
posted @ 2016-06-05 20:12  迦瓦栈队  阅读(165)  评论(0编辑  收藏  举报