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

2023-05-20,,

转自:http://takeme.iteye.com/blog/1876850

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

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

键盘和鼠标事件

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

java之 22天 GUI 图形界面编程(一)的相关教程结束。

《java之 22天 GUI 图形界面编程(一).doc》

下载本文的Word格式文档,以方便收藏与打印。