首页 > 代码库 > java——GUI

java——GUI

    GUI是图形用户界面的英文缩写,说点直白一点GUI就是窗口、按钮等元素的总称。java中实现GUI是利用java.awt包及其子包进行性编程的。

    在java.awt包中component和container是的它的两个核心,前者包括了Button、TextField等实现类;后者是component的子类,但是后者是一些Frame、panel等容器实现类,这些容器元素可以容纳Component对象。

    说的简单一点就是容器对象中可以添加Button、TextField等这些对象。下图中也进一步说明了这一点。



布局管理器

包含了FlowLayout,BorderLayout,GridLayout,布局管理器主要是管理添加到容器中的元素的布局。

就像一间房子,买了好多的家具,至于怎么摆放这些家具,完全是由这个房子的主人去决定的,而这个房子的主人就是布局管理器。

举例:设置7个按钮,利用FlowLayout居中排列。

import java.awt.*;
public class TestFlowLayout2 {
    public static void main(String args[]) {
        Frame f = new Frame("Java Frame");
        FlowLayout l = 
            new FlowLayout(FlowLayout.CENTER, 20, 40);
        f.setLayout(l); 
        f.setLocation(300,400);
        f.setSize(300,200);
        f.setBackground(new Color(204,204,255));
        for(int i = 1; i<=7; i++){
            f.add(new Button("BUTTON"));
        }
        f.setVisible(true);
    }
}

事件监听

为容器中的Button等元素添加是事件,并利用实现对象监听器接口的对象,进行监听。

举例:点击键盘“箭头向上”键,就在cmd窗口中打印“up”

<pre name="code" class="java">import java.awt.*;
import java.awt.event.*;

public class TestKey{
	public static void main(String arg[]){
		new KeyFrame().launchFrame();
	}
}

class KeyFrame extends Frame{
	public void launchFrame(){
		setSize(200,200);
		setLocation(300,300);
		addKeyListener(new MykeyMon()); //注册事件
		setVisible(true);
	}
}

	class MykeyMon extends KeyAdapter{   //监听器类
		public void keyPressed(KeyEvent e){
			int keyCode=e.getKeyCode();
			if (keyCode==KeyEvent.VK_UP){
				System.out.println("up");  //监听器动作
			}
		}
	}

监听器类创建方法:

内部类:在外围类的内部书写一个类,方便此类对成员变量和成员方法的访问。

对上面的例子的改造。

import java.awt.*;
import java.awt.event.*;

public class TestKey{
	public static void main(String arg[]){
		new KeyFrame().launchFrame();
	}
}

class KeyFrame extends Frame{
	public void launchFrame(){
		setSize(200,200);
		setLocation(300,300);
		addKeyListener(new MykeyMon());
		setVisible(true);
	}
	
	class MykeyMon extends KeyAdapter{   //内部类
		public void keyPressed(KeyEvent e){
			int keyCode=e.getKeyCode();
			if (keyCode==KeyEvent.VK_UP){
				System.out.println("up");
			}
		}
	}
}

匿名类:创建时用New语句来声明它们。

对上面的例子的改造。

import java.awt.*;
import java.awt.event.*;

public class TestKey{
	public static void main(String arg[]){
		new KeyFrame().launchFrame();
	}
}

class KeyFrame extends Frame{
	public void launchFrame(){
		setSize(200,200);
		setLocation(300,300);
		this.addKeyListener(new MykeyMon(){
			public void keyPressed(KeyEvent e){    //匿名类
				int keyCode=e.getKeyCode();
				if (keyCode==KeyEvent.VK_UP){
					System.out.println("up");
				}
			}		
		});
		setVisible(true);
	}
}

    总结:1.GUI通过java.awt包及其子包实现。2.容器元素中添加Button等这些元素。3.布局管理器管理容器中元素的布局。4.容器中的元素可以添加事件监听。


java——GUI