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

java之 22天 GUI 图形界面编程(一)

2017-03-27 11:24 393 查看
GUI(图形用户界面)

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

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();
}

}


键盘和鼠标事件

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();
}

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