黑马程序员--GUI
来源:互联网 发布:酷狗铃声截取软件 编辑:程序博客网 时间:2024/06/08 09:01
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
GUI 图像化界面
GUI:Graphical UserInterface(图形用户接口)。
用图形的方式,来显示计算机操作的界面,这样更方便更直观。
CLI:Command line UserInterface (命令行用户接口)
就是常见的Dos命令行操作。
需要记忆一些常用的命令,操作不直观。
Java为GUI提供的对象都存在java.Awt,java.Swing两个包中。
Awt与Swing:
java.Awt:AbstractWindow ToolKit (抽象窗口工具包),属于重量级工具包,
java.Swing:属于轻量级工具包,在awt的基础上建立了一套图像处理系统,增强了移植性。(跨平台)
继承关系图:
布局管理器
容器中的组件的排放方式,就是布局。
常见的布局管理器:
FlowLayout(流式布局管理器)//目前最常用的
从左到右的顺序排列。
Panel默认的布局管理器。
BorderLayout(边界布局管理器)
东,南,西,北,中
Frame默认的布局管理器。
GridLayout(网格布局管理器)
规则的矩阵
CardLayout(卡片布局管理器)
选项卡
GridBagLayout(网格包布局管理器)
非规则的矩阵
使用方法:newframe().setLayout(newFlowLayout());
创建一个简单的图形化界面:
创建图形化界面。
1,创建frame窗体。
2,对窗体进行设置。
比如大小,位置,布局。
3,定义组件。
4,将组件通过窗体的add 方法添加到窗体中。
5,让窗体显示,通过setVisible(true);
package com.itheima;
import java.awt.FlowLayout;
import java.awt.Frame;
public class FrameDemo {
public static void main(String[] args) {
//创建一个Frame对象。
Frame f = new Frame();
//设置Frame的大小,长宽。
f.setSize(300, 200);
f.setLocation(500,300);
//设置Frame的布局方式。
f.setLayout(new FlowLayout());
//设置可见性。
f.setVisible(true);
}
}
通过上面的这个例子我们发现,窗口并不具备关闭功能,那么这是就需要添加事件监听机制了。
事件监听机制
事件监听机制的特点。
1,事件源。
2,事件。
3,监听器。
4,事件处理。
事件源:就是awt包或者swing中的那些图形界面组件。
事件:每一个事件源都有自己特有的对应事件和共性事件。
监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中。
以上三者,在java中都已经定义好了。
直接获取其对象来用就可以了。
我们要做的事情是,就是对产生的动作进行处理。
事件监听机制流程图:
确定事件源(容器或组件)
通过事件源对象的addXXXListener()方法将侦听器注册到该事件源上。
该方法中接收XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象。
一般用匿名内部类来表示。
在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。
事件触发后会把事件打包成对象传递给该变量。(其中包括 事件源对象。通过getSource()或者,getComponent()获取。)
示例:
package com.itheima;
import java.awt.*;
import java.awt.event.*;
public class FrameDemo2 {
public static void main(String[] args) {
//设置窗体
Frame f = new Frame();
f.setSize(300,200);
f.setLayout(new FlowLayout());
f.setVisible(true);
//新建允许编辑单行文本的文本组件
TextField tf = new TextField(32);
//新建按钮
Button but = new Button("按钮");
Button but2 = new Button("按钮2");
//构造一个新文本区,该文本区具有指定的行数和列数
TextArea ta = new TextArea(5, 32);
//设置为只读
ta.setEditable(false);
//将组件添加到窗体
f.add(tf);
f.add(but);
f.add(but2);
f.add(ta);
//添加窗口监听器。
f.addWindowListener(new WindowAdapter() {
//关闭事件源。
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
//创建鼠标监听器。
but.addMouseListener(new MouseAdapter() {
intcount=0;
intcount2=0;
@Override
//单击新建窗口。
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("鼠标单击组件"+(++count)+"次");
if(e.getClickCount()==2){
System.out.println("鼠标双击组件"+(++count2)+"次");
}
}
});
but.addMouseListener(new MouseAdapter() {
intcount=0;
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println("鼠标进入组件"+(++count)+"次");
}
});
but2.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
//使用esc键退出
if(e.getKeyChar()==Event.ESCAPE)
System.exit(0);
System.out.println(e.getKeyChar());
//使用组合键退出
if(e.isControlDown() &&e.getKeyCode()==Event.ENTER){
System.out.println("被Ctrl+Entry组合键关闭了。");
System.exit(0);
}
}
});
tf.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
//测试键位是否违法。
if(!(e.getKeyChar()>='0' &&e.getKeyChar()<='9')){
System.out.println(e.getKeyCode());
ta.append(e.getKeyChar()+"是违法的");
ta.append("\r\n");
}
super.keyPressed(e);
}
});
}
}
示例二:打印出文件夹中文件
package com.itheima;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
public class FrameDemo3 {
public static void main(String[] args) {
new MyFrame();
}
}
class MyFrame{
private Framef;
private Buttonb;
private TextFieldtf;
private TextAreata ;
public MyFrame() {
// TODO Auto-generated constructor stub
init();
}
private void init(){
//设置窗体
f =new Frame("我的电脑");
f.setSize(600, 500);
f.setLayout(new FlowLayout());
f.setVisible(true);
b= new Button("转到");
tf = new TextField(72);
ta= new TextArea(27, 80);
ta.setEditable(false);
f.add(tf);
f.add(b);
f.add(ta);
action();
}
private void getFile() {
String str =tf.getText();
File file = new File(str);
//判断是否是正确地址
if(file.exists() &&file.isDirectory()){
//打印前清屏
ta.setText("");
String[] names = file.list();
for (Stringname : names) {
ta.append(name+"\r\n");
}
}else{
ta.setText("输入路径错误"+file);
}
}
private void action() {
// TODO Auto-generated method stub
f.addWindowListener(new WindowAdapter() {
//设置窗口关闭
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
tf.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
//当敲入entry后执行
if(e.getKeyChar()==KeyEvent.VK_ENTER){
//得到输入的文件地址
getFile();
}
}
});
b.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvente) {
// TODO Auto-generated method stub
getFile();
}
});
}
}
Dialog:
是一个带标题和边界的顶层窗口,构造方法:
Dialog
(
Frame
owner,
String
title, boolean modal)
:构造一个最初不可见的Dialog
,它带有指定的所有者Frame
、标题和模式,当modal为true时不能点击底层窗口,为false时可以。
示例:优化FrameDemo3程序,将文字提醒换为窗口提醒。
package com.itheima;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
public class DialogDemo {
public static void main(String[] args) {
new MyFrame2();
}
}
class MyFrame2{
private Dialogd;
private Framef;
private Buttonb;
private Buttonokb;
private TextFieldtf;
private TextAreata ;
private Labellab;
// private String str;
public MyFrame2() {
// TODO Auto-generated constructor stub
init();
}
private void init(){
//设置窗体
f =new Frame("我的电脑");
f.setSize(600, 500);
f.setLayout(new FlowLayout());
f.setVisible(true);
d = new Dialog(f,"输入错误",true);
d.setSize(100, 100);
b= new Button("转到");
tf = new TextField(72);
ta= new TextArea(27, 80);
ta.setEditable(false);
f.add(tf);
f.add(b);
f.add(ta);
fraAction();
// diaAction();
}
private void getFile() {
String str =tf.getText();
File file = new File(str);
//判断是否是正确地址
if(file.exists() &&file.isDirectory()){
//打印前清屏
ta.setText("");
String[] names = file.list();
for (Stringname : names) {
ta.append(name+"\r\n");
}
}else{
str = file+"地址错误";
diaAction(str);
d.setVisible(true);
// d = new Dialog(f, "输入错误", false);
}
}
private void fraAction() {
// TODO Auto-generated method stub
f.addWindowListener(new WindowAdapter() {
//设置窗口关闭
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
tf.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
//当敲入entry后执行
if(e.getKeyChar()==KeyEvent.VK_ENTER){
//得到输入的文件地址
getFile();
}
}
});
b.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
getFile();
}
});
}
private void diaAction(String str){
d.setLayout(new FlowLayout());
lab = new Label(str);
okb = new Button("确定");
d.add(lab);
d.add(okb);
d.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
d.setVisible(false);
}
});
okb.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
d.setVisible(false);
}
});
okb.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
super.keyPressed(e);
}
});
}
}
菜单:
菜单简单应用:
package com.itheima;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class MenuDemo {
public static void main(String[] args) {
Frame f = new Frame();
f.setSize(300,200);;
MenuBar mb = new MenuBar();
Menu m1 = new Menu("文件1");
Menu m2 = new Menu("文件2");
Menu m3 = new Menu("文件3");
MenuItem mt1 = new MenuItem("选择1");
MenuItem mt2 = new MenuItem("选择2");
MenuItem mt3 = new MenuItem("选择3");
mb.add(m1);
mb.add(m2);
mb.add(m3);
m1.add(mt1);
m1.add(mt2);
m1.add(mt3);
f.setMenuBar(mb);
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
}
}
- 黑马程序员 GUI
- 黑马程序员之GUI
- 黑马程序员 Java GUI
- 黑马程序员: GUI
- 黑马程序员-----GUI
- 黑马程序员 GUI学习
- 黑马程序员:GUI
- 黑马程序员_day22 GUI。
- 黑马程序员九、GUI
- 55.黑马程序员-GUI
- 黑马程序员---GUI【java】
- 黑马程序员 GUI
- 黑马程序员—GUI
- 黑马程序员-GUI
- 黑马程序员-GUI编程
- 黑马程序员----9GUI
- 黑马程序员-GUI概述
- 黑马程序员-GUI练习
- EAS-Web开发环境问题汇总
- IOS开发之block块详细分析
- 得到数据库中的数据,并在Highcharts控件中显示
- R语言基础备忘-plot()详解
- 闭包 Scala学习笔记-面向对象篇
- 黑马程序员--GUI
- 查询oracle被锁的表及其如何释放
- Interesting-Linux shell之inpath.sh
- mongodb的简易入库
- 安装和配置JDK
- WebApp 的 meta 标签
- 杭电ACM 2042:不容易系列之二
- android面试题-简答题(一)
- 串口接收模块 5倍速率采样