网络编程GUI:
来源:互联网 发布:淘宝哪家iphone 编辑:程序博客网 时间:2024/06/06 20:55
网络编程
GUI::(图形用户界面)
java.Awt包:Abstract Window Toolkit,即抽象窗口工具包。要调用本地系统方法实现功能,属重量级控件。
javax.Swing包:在AWT的基础上建立的一套图形界面系统,其中提供了更多的组件,且完全由java实现,增强了移植性,属轻量级控件。
关系图
创布局
FlowLayout:流式布局管理器。从左向右排列,是Panel默认的布局管理器
BorderLayout:边界式布局管理器,东南西北中的排列方式,是Frame的默认布局管理器。如果窗体中只有一个组件,将会覆盖整个窗体。
GridLayout:网格式布局管理器,规则的矩阵
CardLayout:卡片式布局管理器,即选项卡
GridBayLayout:网格包布局管理器,非规则矩阵
建图形化界面:
1,创建frame窗体。
2,对窗体进行基本设置。
比如大小,位置,布局。
3,定义组件。
4,将组件通过窗体的add方法添加到窗体中。
5,让窗体显示,通过setVisible(true)
class AwtDemo
{
public static void main(String[] args)
{
Frame f = new Frame("my awt");//创建窗体
f.setSize(500,400);//长.宽
//f.setBounds(300,100,600,500);//移动组件并调整大小
f.setLocation(300,200);//设置本地位置(横坐标,纵坐标)
f.setLayout(new FlowLayout());//布局--流是布局
Button b = new Button("我是一个按钮");创建按钮
f.add(b);添加按钮
f.addWindowListener(new WindowAdapter()//监听事件,同时应用了匿名内部类
{
public void windowClosing(WindowEvent e)//关闭方法
{
System.out.println("我关");
System.exit(0);
}
public void windowActivated(WindowEvent e)
{
System.out.println("我活了。");
}
public void windowOpened(WindowEvent e)
{
System.out.println("我被打开了,hahahhahah");
}
});//可以封装成一个窗体的时间
f.setVisible(true);//窗体显示
//System.out.println("Hello World!");
}
}
事件监听机制的特点:
1,事件源。
2,事件。
3,监听器。
4,事件处理。
事件源:就是awt包或者swing包中的那些图形界面组件。
事件:每一个事件源都有自己特有的对应事件和共性事件。
监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。
以上三者,在java中都已经定义好了。
直接获取其对象来用就可以了。
我们要做的事情是,就是对产生的动作进行处理。
package myGUI;
import java.awt.*;
import java.awt.event.*;
/**
* GUI的简单练习
* @author Qihuan
*
*/
public class GuiPractice {
//定义该图形中所需的组件的引用
private Frame f;
private Button b1;
private Button b2;
private TextField tf;
private TextArea ta;
//构造函数
GuiPractice(){
init();
}
//初始化图形界面
public void init(){
//建立窗体对象
f = new Frame("Hello");
//设置窗体位置,大小
f.setBounds(200, 200, 300, 250);
//设置排列方式
f.setLayout(new FlowLayout());
//建立组件对象
b1 = new Button("Quit");
b2 = new Button("Enter");
tf = new TextField(22);
ta = new TextArea(10,36);
//将组件添加到窗体当中
f.add(tf);
f.add(b2);
f.add(b1);
f.add(ta);
//加载窗体上的事件
myEvent();
//设置窗体可见
f.setVisible(true);
}
//事件
public void myEvent(){
//设置窗体事件
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//设置按钮事件,按钮功能:退出
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
//给b2添加一个鼠标监听器
b2.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
String text = tf.getText();
ta.setText(text);
tf.setText("");
}
});
//给窗体添加一个键盘监听器,按ESC键,关闭窗口
b1.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
System.exit(0);
}
}
});
//给TextFiled添加一个键盘监听器,用于接受数字
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
int code = e.getKeyCode();
if(code<KeyEvent.VK_0 || code>KeyEvent.VK_9){
e.consume();
}
}
});
//给TextArea添加一个键盘监听器,使其不能输入文字
ta.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
e.consume();
}
});
}
public static void main(String[] args) {
new GuiPractice();
}
}
Menu:菜单,继承MenuItem;有右三角的图标存在,可添加Menu和MenuItem
MenuBar:菜单栏,可添加菜单和菜单条目。一般先创建菜单栏,再创建菜单。
MenuItem:菜单条目,也称菜单项,无右三角的图标存在,是最终的菜单项。
菜单的事件处理和组件一样,可以对类型为MenuItem和Menu的对象这个事件源添加活动监听ActionListener,并进行相关的事件处理。
通过setMenuBar()方法,将菜单添加到Frame中。
package myGUI;//带包编译有特殊方法-->javac -d d:\java FileList.java///jar -cvf 创建jar
//Main-Class: myGUI.FileList(回车)
import java.io.*;
import java.awt.*;
import java.awt.event.*;
/**
* 文件目录列表(GUI)
* @author Qihuan
*
*/
public class FileList {
//定义窗体
private Frame f;
private Button search;
private TextField tf;
private TextArea ta;
private Label labAddress;
//定义报错对话框
private Dialog diaError;
private Label lab2;
private Button ok;
//定义菜单
private MenuBar mb;
private Menu menuFile,menuInfo;
private MenuItem close,info;
//定义信息对话框
private Dialog diaInfo;
private Label labInfo;
//构造函数
FileList(){
init();
}
//初始化组件
public void init(){
f = new Frame("FileReader");
f.setBounds(200,100,400,550);
f.setLayout(new FlowLayout());
labAddress = new Label("Address:");
tf = new TextField(27);
search = new Button("Search");
ta = new TextArea(28,47);
f.add(labAddress);
f.add(tf);
f.add(search);
f.add(ta);
diaError = new Dialog(f,"Error",true);
diaError.setBounds(250, 200, 300, 90);
diaError.setLayout(new FlowLayout());
lab2 = new Label();
ok = new Button("ok");
diaError.add(lab2);
diaError.add(ok);
mb = new MenuBar();
menuFile = new Menu("File");
menuInfo = new Menu("help");
close = new MenuItem("Close");
info = new MenuItem("Info");
diaInfo = new Dialog(f,"Info",false);
labInfo = new Label("Qihuan : Are you OK?");
diaInfo.setBounds(250, 200, 300, 90);
mb.add(menuFile);
mb.add(menuInfo);
menuFile.add(close);
menuInfo.add(info);
diaInfo.add(labInfo);
f.setMenuBar(mb);
myEvent();
f.setVisible(true);
}
private void myEvent() {
//点击info按钮显示信息
info.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
diaInfo.setVisible(true);
}
});
//close按钮关闭
close.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
//信息对话框关闭
diaInfo.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
diaInfo.setVisible(false);
}
});
//报错对话框关闭(X)
diaError.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
diaError.setVisible(false);
}
});
//报错对话框关闭(ok按钮)
ok.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
diaError.setVisible(false);
}
});
//窗口关闭(X)
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//输入信息后回车出结果
tf.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode() == KeyEvent.VK_ENTER)
showDir();
}
});
//按钮
search.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
showDir();
}
});
//TextArea区域不能输入文本
ta.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
e.consume();
}
});
}
//显示文件路径功能
private void showDir(){
String dirPath = tf.getText();
File dir = new File(dirPath);
if(dir.exists() && dir.isDirectory()){
ta.setText(null);
String[] names = dir.list();
for (String name : names) {
ta.append(name+"\r\n");
}
} else {
diaError.setVisible(true);
lab2.setText("Not found:"+dirPath);
}
}
public static void main(String[] args) {
new FileList();
}
}
GUI::(图形用户界面)
java.Awt包:Abstract Window Toolkit,即抽象窗口工具包。要调用本地系统方法实现功能,属重量级控件。
javax.Swing包:在AWT的基础上建立的一套图形界面系统,其中提供了更多的组件,且完全由java实现,增强了移植性,属轻量级控件。
关系图
创布局
FlowLayout:流式布局管理器。从左向右排列,是Panel默认的布局管理器
BorderLayout:边界式布局管理器,东南西北中的排列方式,是Frame的默认布局管理器。如果窗体中只有一个组件,将会覆盖整个窗体。
GridLayout:网格式布局管理器,规则的矩阵
CardLayout:卡片式布局管理器,即选项卡
GridBayLayout:网格包布局管理器,非规则矩阵
建图形化界面:
1,创建frame窗体。
2,对窗体进行基本设置。
比如大小,位置,布局。
3,定义组件。
4,将组件通过窗体的add方法添加到窗体中。
5,让窗体显示,通过setVisible(true)
class AwtDemo
{
public static void main(String[] args)
{
Frame f = new Frame("my awt");//创建窗体
f.setSize(500,400);//长.宽
//f.setBounds(300,100,600,500);//移动组件并调整大小
f.setLocation(300,200);//设置本地位置(横坐标,纵坐标)
f.setLayout(new FlowLayout());//布局--流是布局
Button b = new Button("我是一个按钮");创建按钮
f.add(b);添加按钮
f.addWindowListener(new WindowAdapter()//监听事件,同时应用了匿名内部类
{
public void windowClosing(WindowEvent e)//关闭方法
{
System.out.println("我关");
System.exit(0);
}
public void windowActivated(WindowEvent e)
{
System.out.println("我活了。");
}
public void windowOpened(WindowEvent e)
{
System.out.println("我被打开了,hahahhahah");
}
});//可以封装成一个窗体的时间
f.setVisible(true);//窗体显示
//System.out.println("Hello World!");
}
}
事件监听机制的特点:
1,事件源。
2,事件。
3,监听器。
4,事件处理。
事件源:就是awt包或者swing包中的那些图形界面组件。
事件:每一个事件源都有自己特有的对应事件和共性事件。
监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。
以上三者,在java中都已经定义好了。
直接获取其对象来用就可以了。
我们要做的事情是,就是对产生的动作进行处理。
package myGUI;
import java.awt.*;
import java.awt.event.*;
/**
* GUI的简单练习
* @author Qihuan
*
*/
public class GuiPractice {
//定义该图形中所需的组件的引用
private Frame f;
private Button b1;
private Button b2;
private TextField tf;
private TextArea ta;
//构造函数
GuiPractice(){
init();
}
//初始化图形界面
public void init(){
//建立窗体对象
f = new Frame("Hello");
//设置窗体位置,大小
f.setBounds(200, 200, 300, 250);
//设置排列方式
f.setLayout(new FlowLayout());
//建立组件对象
b1 = new Button("Quit");
b2 = new Button("Enter");
tf = new TextField(22);
ta = new TextArea(10,36);
//将组件添加到窗体当中
f.add(tf);
f.add(b2);
f.add(b1);
f.add(ta);
//加载窗体上的事件
myEvent();
//设置窗体可见
f.setVisible(true);
}
//事件
public void myEvent(){
//设置窗体事件
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//设置按钮事件,按钮功能:退出
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
//给b2添加一个鼠标监听器
b2.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
String text = tf.getText();
ta.setText(text);
tf.setText("");
}
});
//给窗体添加一个键盘监听器,按ESC键,关闭窗口
b1.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
System.exit(0);
}
}
});
//给TextFiled添加一个键盘监听器,用于接受数字
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
int code = e.getKeyCode();
if(code<KeyEvent.VK_0 || code>KeyEvent.VK_9){
e.consume();
}
}
});
//给TextArea添加一个键盘监听器,使其不能输入文字
ta.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
e.consume();
}
});
}
public static void main(String[] args) {
new GuiPractice();
}
}
Menu:菜单,继承MenuItem;有右三角的图标存在,可添加Menu和MenuItem
MenuBar:菜单栏,可添加菜单和菜单条目。一般先创建菜单栏,再创建菜单。
MenuItem:菜单条目,也称菜单项,无右三角的图标存在,是最终的菜单项。
菜单的事件处理和组件一样,可以对类型为MenuItem和Menu的对象这个事件源添加活动监听ActionListener,并进行相关的事件处理。
通过setMenuBar()方法,将菜单添加到Frame中。
package myGUI;//带包编译有特殊方法-->javac -d d:\java FileList.java///jar -cvf 创建jar
//Main-Class: myGUI.FileList(回车)
import java.io.*;
import java.awt.*;
import java.awt.event.*;
/**
* 文件目录列表(GUI)
* @author Qihuan
*
*/
public class FileList {
//定义窗体
private Frame f;
private Button search;
private TextField tf;
private TextArea ta;
private Label labAddress;
//定义报错对话框
private Dialog diaError;
private Label lab2;
private Button ok;
//定义菜单
private MenuBar mb;
private Menu menuFile,menuInfo;
private MenuItem close,info;
//定义信息对话框
private Dialog diaInfo;
private Label labInfo;
//构造函数
FileList(){
init();
}
//初始化组件
public void init(){
f = new Frame("FileReader");
f.setBounds(200,100,400,550);
f.setLayout(new FlowLayout());
labAddress = new Label("Address:");
tf = new TextField(27);
search = new Button("Search");
ta = new TextArea(28,47);
f.add(labAddress);
f.add(tf);
f.add(search);
f.add(ta);
diaError = new Dialog(f,"Error",true);
diaError.setBounds(250, 200, 300, 90);
diaError.setLayout(new FlowLayout());
lab2 = new Label();
ok = new Button("ok");
diaError.add(lab2);
diaError.add(ok);
mb = new MenuBar();
menuFile = new Menu("File");
menuInfo = new Menu("help");
close = new MenuItem("Close");
info = new MenuItem("Info");
diaInfo = new Dialog(f,"Info",false);
labInfo = new Label("Qihuan : Are you OK?");
diaInfo.setBounds(250, 200, 300, 90);
mb.add(menuFile);
mb.add(menuInfo);
menuFile.add(close);
menuInfo.add(info);
diaInfo.add(labInfo);
f.setMenuBar(mb);
myEvent();
f.setVisible(true);
}
private void myEvent() {
//点击info按钮显示信息
info.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
diaInfo.setVisible(true);
}
});
//close按钮关闭
close.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
//信息对话框关闭
diaInfo.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
diaInfo.setVisible(false);
}
});
//报错对话框关闭(X)
diaError.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
diaError.setVisible(false);
}
});
//报错对话框关闭(ok按钮)
ok.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
diaError.setVisible(false);
}
});
//窗口关闭(X)
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//输入信息后回车出结果
tf.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode() == KeyEvent.VK_ENTER)
showDir();
}
});
//按钮
search.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
showDir();
}
});
//TextArea区域不能输入文本
ta.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
e.consume();
}
});
}
//显示文件路径功能
private void showDir(){
String dirPath = tf.getText();
File dir = new File(dirPath);
if(dir.exists() && dir.isDirectory()){
ta.setText(null);
String[] names = dir.list();
for (String name : names) {
ta.append(name+"\r\n");
}
} else {
diaError.setVisible(true);
lab2.setText("Not found:"+dirPath);
}
}
public static void main(String[] args) {
new FileList();
}
}
0 0
- GUI和网络编程
- 网络编程GUI:
- 多线程,GUI,Socket网络编程
- 黑马程序员--GUI、网络编程
- GUI,网络编程,正则表达式
- 黑马程序员----GUI、网络编程
- 黑马程序员----GUI编程和网络编程
- 黑马程序员--GUI和网络编程
- 06 java GUI 网络编程:图形界面聊天室
- 黑马程序员----GUI与网络编程
- 黑马程序员——GUI,网络编程
- 黑马程序员--Java基础--GUI、网络编程
- JAVASE--GUI图形用户界面、网络编程
- java基础——GUI、网络编程
- Java之GUI和网络编程
- Java基础笔记五GUI和网络编程
- 黑马程序员----Java基础之Gui与网络编程
- 黑马程序员——网络编程及GUI
- 海量数据处理面试题
- 面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
- CCMenu的布局
- 程序员练级指南
- uva 10474 Where is the Marble?(简单题)
- 网络编程GUI:
- 愚人节的礼物
- 初识HTML
- Permutation Sequence
- UVA 573 The Snail
- 【第三次自考】第一阶段总结
- 基于递归的二叉树遍历
- 采药问题
- androd中主线程和非主线程的通信机制(Handler/Looper/Message)