您的位置:首页 > 产品设计 > UI/UE

java GUI 图形界面编程

2016-05-17 13:07 573 查看
转:http://takeme.iteye.com/blog/1876850

GUI(图形用户界面)

Java代码


import java.awt.Button;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

/**

* GUI(图形用户界面)

* Graphical User Interface(图形用户接口)

* 用图形的方式,来显示计算机操作的界面,这样更方便更直观.

*

* CLI

* Command Line User Interface(命令行用户接口)

* 就是常用的Dos命令行操作.

* 需要记忆一些常用的命令.操作更直观.

*

* 举例:

* 比如:创建文件夹,或者删除文件夹等

* md haha del haha

*

*

* Java的GUI提供的对象都存在 java.Awt 和 javax.Swing 两个包中.

*

* java.Awt:Abstract Window ToolKit(抽象 窗口工具包)

* 需要调用本地系统方法实现功能.属重量级控件 (跨平台不够强)

*

* java.Swing:在AWT的基础上,建立的一套图形界面系统,器重提供了更多的组件,

* 而且完全由java实现,增强了移植性,属于轻量级控件.(跨平台很好)

*

* java.swt: IBM 公司开发 Eclipse 用的组件工具 可以Eclipse网站下载后就可以使用了.

*

*

* 布局管理器

* 1)容器中的组件的排放方式,就是布局.

* 2)常见的布局管理器

* FlowLayout(流式布局管理器)

* 从左到右的顺序排列

* Panel默认的布局管理器

* BorderLayout(辩解布局管理器)

* 东 南 西 北 中

* Frame 默认的布局管理器

* 不指定布局方式,默认 满屏覆盖,在添加一个 也是 满屏覆盖

* GridLayout (网格布局管理器)

* 规则的矩阵

* CardLayout (卡片布局管理器)

* 选项卡

* GridBagLayout(网格包布局管理器)

* 非规则的矩阵

*

* 事件监听机制组成

* 事件源:

* 事件:Event

* 监听器:Listener

* 时间处理:(引发事件后处理方式)

*

* 事件源:就是awt包或者swing包中的那些图像界面组件.

* 事件:每个事件源都有自己特定的对应时间和共性时间.

* 监听器:可以出发某一个事件的动作都已经封装到监听器中.

*/

public class GuiDemo {

public static void main(String[] args) {

Frame f=new Frame("my awt");

f.setSize(500,400);

f.setLocation(300,200);

f.setLayout(new FlowLayout());

Button b=new Button("我是一个按钮");

f.add(b);

f.addWindowListener(new MyWin());

f.setVisible(true);

System.out.println("Hello world!");

}

}

//因为接口WindowLinstener中的所有方法都被子类 WindowAdapter实现了,.

//并且覆盖了其中的所有方法,那么我们只能继承 WindowAdapter 覆盖我们的方法即可

class MyWin extends WindowAdapter{

@Override

public void windowClosing(WindowEvent e) {

// TODO Auto-generated method stub

//System.out.println("Window closing"+e.toString());

System.out.println("我关了");

System.exit(0);

}

@Override

public void windowActivated(WindowEvent e) {

//每次获得焦点 就会触发

System.out.println("我活了");

//super.windowActivated(e);

}

@Override

public void windowOpened(WindowEvent e) {

// TODO Auto-generated method stub

System.out.println("我开了");

//super.windowOpened(e);

}

}

简单Frame

Java代码


import java.awt.Button;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class FrameDemo {

//定义该图像中所需要的组件的引用

private Frame f;

private Button but;

FrameDemo(){

init();

}

public void init(){

f=new Frame("my freame");

f.setBounds(300,100,600,500);

f.setLayout(new FlowLayout()); //采用流式布局

but=new Button("my button");

//将组件添加到 frame中

f.add(but);

//加载一下窗体上的事件.

myEvent();

//显示窗体

f.setVisible(true);

}

private void myEvent(){

f.addWindowListener(new WindowAdapter(){

@Override

public void windowClosing(WindowEvent e) {

// TODO Auto-generated method stub

//super.windowClosing(e);

System.exit(0);

}

});

//让按钮具备退出程序的功能

/*

* 按钮就是事件源

* 那么选择那个监听器呢?

* 通过关闭窗体实例了解到,下个要知道那个组件具备什么样的特有监听器,

* 需要查看该组件对象的功能.

*/

//添加一个活动监听

but.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

System.out.println("退出, 按钮干的");

System.exit(0);

}

});

}

public static void main(String[] args) {

FrameDemo f=new FrameDemo();

}

}

键盘和鼠标事件

Java代码


import java.awt.Button;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.TextField;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class MouseAndKeyEvent {

private Frame f;

private Button but;

private TextField tf;

public MouseAndKeyEvent() {

init();

}

private void init(){

f=new Frame("me frame");

f.setBounds(300, 200, 600, 500);

f.setLayout(new FlowLayout());

tf=new TextField(20);

but=new Button("my Botton");

f.add(tf);

f.add(but);

event();

f.setVisible(true);

}

private void event(){

f.addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

// TODO Auto-generated method stub

System.exit(0);

}

});

tf.addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent e){

int code=e.getKeyCode();

if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){

System.out.println(code+"....非法的输入");

e.consume(); //不执行加入文本框.

}

}

});

but.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

System.out.println("actionPerformed 活动一次");

}

});

but.addMouseListener(new MouseAdapter() {

private int count=0;

private int clickCount=1;

public void mouseEntered(MouseEvent e){

System.out.println("鼠标进入到改组件"+count++);

}

public void mouseClicked(MouseEvent e){

if(e.getClickCount()==2){

System.out.println("双击动作");

}else

System.out.println("点击动作"+clickCount++);

}

});

//添加 键盘事件

but.addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent e){

System.out.println(e.getKeyChar()+"..."+e.getKeyCode());

System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());

//enter 就退出

/*if(e.getKeyCode()==KeyEvent.VK_ENTER)

System.

exit(0);*/

//ctrl + Enter 发送消息

if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){

System.out.println("我要发送消息!");

}

}

});

}

public static void main(String[] args) {

// TODO Auto-generated method stub

new MouseAndKeyEvent();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: