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

[size=medium][b]GUI(图形用户界面)[/b][/size]


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

}


[size=medium][b]键盘和鼠标事件[/b][/size]


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

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值