------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、GUI介绍
GUI
- Graphical User Interface(图形用户接口)。
- 用图形的方式,来显示计算机操作的界面,这样更方便更直观。
CLI
- Command line User Interface (命令行用户接口)
- 就是常见的Dos命令行操作。
- 需要记忆一些常用的命令,操作不直观。
Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中。
- java.Awt:Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件。
- javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。
一般的的布局管理器:
①FlowLayout:Panel默认的布局管理器,由左向右排列。
②BorderLayout:Frame的默认布局管理器边界式布局管理器,东南西北中的组织方式,
③GridLayout:矩阵网格式
④CardLayout:选项卡式布局管理器
⑤GridBayLayout:不是规则矩阵布局管理器,
主要容器为Container:
Window窗口,单独窗体容器。可以单独使用。
Frame:基本窗体框架。
Dialog:对话框。
Panel :面板容器。无法单独使用。存在于其他容器当中。
基本组件:大部分组件设置方式类似窗体属性设置。
主要基本组件:
Button:按钮
Checkbox:复选框
Choice:单选框
TextComponent:
TextArea:文本域
TextField:文本框(宽度设置为public TextField(int columns))
继承关系图
创建图形界面的步骤:
①创建Frame窗体。
②对窗体进行基本设置。比如大小、位置、布局。
③定义组件。
④将组件通过窗体的add方法添加到窗体中。
⑤让窗体显示,通过setVisible(true)
示例代码:
package day8;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
public class FrameDemo {
//定义该图形中所需要的引用
private Frame f;
private Button but;
FrameDemo() {
init();
}
//对图形界面进行初始化
public void init() {
f = new Frame("这是一个窗体");
// 对frame进行基本设置
f.setBounds(300, 400, 500, 600);
f.setLayout(new FlowLayout());
but = new Button("button");
f.add(but);
myEvent();
f.setVisible(true);
}
//设置事件
public void myEvent(){
//设置监听器
f.addWindowListener(new WindowAdapter() {
//设置相应的事件动作
@Override
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
});
//添加一个按钮,具备退出功能
//按钮就是事件源
but.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
}
public static void main(String[] args) {
new FrameDemo();
}
}
窗体菜单代码示例:
package day8;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MenuDemo {
private Frame f;
private Menu m, m1, m2;
private MenuBar mb;
private MenuItem closeMenu, openItem, saveItem;
private FileDialog openDia, saveDia;
private TextArea ta;
File file = null;// 文件对象
MenuDemo() {
init();
}
public void init() {
f = new Frame("菜单");
// 窗体设置
f.setBounds(200, 100, 600, 600);
mb = new MenuBar();
m = new Menu("文件");
m1 = new Menu("一级菜单");
m2 = new Menu("二级菜单");
closeMenu = new MenuItem("退出");
openItem = new MenuItem("打开");
saveItem = new MenuItem("保存");
saveItem.setShortcut(new MenuShortcut(KeyEvent.VK_S));// 添加快捷命令
// 打开 保存 对话框
openDia = new FileDialog(f, "打开", FileDialog.LOAD);
saveDia = new FileDialog(f, "保存", FileDialog.SAVE);
// 文本框
ta = new TextArea();
// 将菜单相关组件 添加到窗体
f.setMenuBar(mb);// 窗体添加菜单栏setMenuBar()
mb.add(m);// MenuBar菜单栏中只能添加Menu不可以添加Menu的父类MenuItem
m.add(openItem);
m.add(saveItem);
// m.addSeparator();//添加分割线
m.add(m1);
m1.add(m2);
m.add(closeMenu);
f.add(ta);
/*
* 代码添加顺序就是图形的顺序 一个菜单项只有一个图形显示 当第二次添加同一个菜单项的时候 之前添加此菜单项的语句被覆盖 或者说 失效
*/
myEvent();
f.setVisible(true);
}
public void myEvent() {
// 为窗体添加 监听器
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// 为菜单项 添加监听器
closeMenu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
openItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
openDia.setVisible(true);
// 打开文本文件 显示内容在文本框
String dirPath = openDia.getDirectory();
String fileName = openDia.getFile();
System.out.println(dirPath + "...." + fileName);
file = new File(dirPath, fileName);
if (dirPath == null || fileName == null)
return;
ta.setText("");
BufferedReader bfr = null;// 局部变量必须赋初始值
try {
bfr = new BufferedReader(new FileReader(file));
String line = null;
while ((line = bfr.readLine()) != null) {
// System.out.println(line);
ta.append(line + "\r\n");// 不要忘记添加换行符号
}
} catch (IOException io) {
throw new RuntimeException("读取失败!");
} finally {
try {
if (bfr != null)
bfr.close();
} catch (IOException ec) {
throw new RuntimeException("关闭失败!");
}
}
}
});
// 为保存按钮添加监听 通过监听事件 执行动作:保存文本 到文件
saveItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (file == null) {
saveDia.setVisible(true);
String dirPath = saveDia.getDirectory();
String fileName = saveDia.getFile();
file = new File(dirPath, fileName);
}
BufferedWriter bfw = null;
try {
bfw = new BufferedWriter(new FileWriter(file));
String text = ta.getText();// 返回文本组件内的文本
bfw.write(text);
bfw.flush();
} catch (IOException ec) {
throw new RuntimeException();
} finally {
try {
if (bfw != null)
bfw.close();
} catch (IOException ec) {
throw new RuntimeException("guan失败!");
}
}
}
});
}
public static void main(String[] args) {
new MenuDemo();
}
}
------ Java培训、Android培训、iOS培训、.Net培训 、期待与您交流! -------