java基础之GUI编程



计算机与人的交互方式:命令行与图形化界面,图形化界面是常见的方式。



Awt 包与 Swing包
Awt比较依赖平台,跨平台性不是特别好。
Swing 是基于Awt的


Component 构件 
Button 按钮
Lable 标签,主要用于封装文字。
Checkbox 复选框。
TextComponent 文本组件。
TextArea 文本区域
TextField文本框
Container 是容器,是一个特殊的组件,里面还可以再增加组件
Window
Frame
Dialog
Panel 面板








布局管理器:
Flow Layout(流式布局),从左到右布局。流式布局默认居中。


Border Layout 边界式布局,上北,下南,左西,右东,中间。默认布局居中。

Grid Layout 网格式布局,以很多格子布局。


DridBag Layout 网格包式布局。

Card Layout 卡片式布局。


坐标式布局最方便,可以任意放。
如果不设置布局管理器,默认的布局就是边界布局,默认居中。




Frame:
setVisible(true);显示窗口。
setSize(500,300);设置长和宽。或者叫横坐标和纵坐标。
setLocation(200,300)设置在屏幕的显示位置。
setBounds(100,200,300,400);设置屏幕显示位置和长宽。








创建图形化界面:
1.创建Fram窗体,
2.对窗体进行基本设置,大小,位置,布局。
3.定义组件
4.将组件通过窗体的add()方法添加到窗体中。
5.让窗体显示,通过seVisible(true);





事件监听机制的特点:
1.事件源,就是Awt包或者Swing包中那些图形界面组件。
2.事件,每一个事件都有自己特有的对应事件和共性事件。
3.监听器,将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。
以上三者在JAVA中都已经定义好了,直接获取来用就可以了。我们要做的就是
对产生的动作进行处理。


4.事件处理




监听器类结尾以Listener结尾,Listener意思为监听器。


抽象类的方法为空,因为这种类不能创建对象,为空的方法也没有具体的实现
所以这种类就定义成为了抽象类,因为这个时候创建这种类的对象没有意义。


import java.awt.*;
import java.awt.event.*;


System.exit(0);//退出程序。


WindowListener 窗体监听器
ActionListener 活动监听器,没有适配器,它只有一个方法。


Adapt适配器,它的出现是为了方便创建匿名内部类,
以方便创建监听器对或者叫方便创建匿名内部类,以方便调用方法。
基本上有三个方法以上的都有适配器。




鼠标键盘事件,是Component中的方法


addMouserListener 增加鼠标监听器,有适配器。
addKeyListener 添加键盘事件,也有适配器。




MenuBar 菜单栏。
Men 菜单
MenuItem 菜单条或者子菜单


菜单栏中添加菜单,菜单中添加子菜单或者菜单条
在菜单中再添加菜单,就会有一个右箭头。就可以添加子菜单。


类多了就可以封装一下,加一个包。




/*
 * 菜单窗体演示
 */


package com.gui;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class MenuDemo
{
private Frame frame;
private MenuBar mb;
private Menu fileItem,saveOthers;
private MenuItem subItem,saveItem,exitItem,openItem;
private FileDialog openDia,saveDia;
private TextArea ta;
private File file;

MenuDemo()
{
init();
}
public void init()
{
frame = new Frame("windows");//添加窗体
mb = new MenuBar();//添加菜单栏
fileItem = new Menu("文件");//添加菜单
saveItem = new MenuItem("保存");
subItem = new MenuItem("子菜单");//添加子菜单
exitItem = new MenuItem("退出");
saveOthers = new Menu("另存为");
openItem = new MenuItem("打开");
ta = new TextArea();


// 设置窗体
frame.setBounds(200,100,500,400);


// 添加组件
frame.add(ta);
mb.add(fileItem);
fileItem.add(openItem);
fileItem.add(saveOthers);
saveOthers.add(subItem);
fileItem.add(saveItem);
fileItem.add(exitItem);
frame.setMenuBar(mb);

openDia = new FileDialog(frame,"打开",FileDialog.LOAD);
saveDia = new FileDialog(frame,"保存",FileDialog.SAVE);
myEvent();
frame.setVisible(true);

}
public void myEvent()
{
// 添加文件保存事件
saveOthers.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(file==null)
{
saveDia.setVisible(true);

String dirPath = saveDia.getDirectory();
String fileName = saveDia.getName();
if(dirPath==null || fileName==null)
return ;
file = new File(dirPath,fileName);
}
try
{
BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
String str = ta.getText();
bufw.write(str);
bufw.close();
}
catch(IOException e1)
{
throw new RuntimeException("读取文件失败");
}
}
});
// 添加文件打开事件
openItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openDia.setVisible(true);
String dirPath = openDia.getDirectory();
String fileName = openDia.getFile();
if(dirPath==null || fileName==null)
return;

file = new File(dirPath,fileName);
try
{
BufferedReader br = new BufferedReader(new FileReader(file));
for(String line=null; (line=br.readLine())!=null;)
{
ta.append(line+"\r\n");
}
br.close();
}
catch(IOException e1)
{
throw new RuntimeException("创建缓冲流失败");
}
}
});
// 添加菜单退出事件
exitItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}

});
// 添加窗体事件
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
new MenuDemo();
}
}





































































































































你可能感兴趣的:(JAVA学习博客)