您的位置:首页 > 产品设计 > UI/UE

黑马程序员----java基础图形化界面GUI

2018-04-11 23:06 627 查看
                         ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

GUI(图形用户界面)

开发GUI用到的包有:
java.awt--> Abstract Window Toolkit(重量级控件)
javax.swing-->轻量级控件

继承关系

Component
|--Button
|--Label
|--Checkbox
|==TextComponent
|--TextArea
|--TextField

|--Container
|--Window
|--Frame
|--Dialog
|--FileDialog
|--Panel

菜单栏的继承体系
MenuComponent
|--MenuBar
|--MenuItem
|--Menu

常见的布局管理器

FlowLayout(流式布局管理器)
从左到右的顺序摆放
Panel 的默认布局管理

BorderLayout (边界布局管理器)
东,南,西,北,中
Frame 的默认布局管理器

GridLayout (网格布局管理器)
规则的矩阵

CardLayout (卡片布局管理器)
选项卡

GridBagLayout (网格包布局管理器)
非规则的矩阵

/*
练习:创建一个窗体,并对按钮响应
*/
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;

class FrameDemo {

// 定义该图形中所需的组件的引用。
private Frame f;
private Button btn;

FrameDemo() {
init();
}

public void init() {

/**
* 创建一个窗口的步骤:
* 1. 创建Frame窗口
* 2. 对窗口进行基本设置
* 比如:大小,布局,位置
* 3. 定义组件.
* 4. 将组件通过窗体的添加方法添加到窗口中
* 5. 设置窗口为显示
*/
f = new Frame("my frame");

// 对frame进行基本设置。
f.setBounds(300, 100, 600, 500);
f.setLayout(new FlowLayout());

btn = new Button("my button");

// 将组件添加到frame中
f.add(btn);

// 加载一下窗体上事件。
myEvent();

// 显示窗体;
f.setVisible(true);

}

/**
* 事件监听机制特点:
* 1. 事件源(awt包或者swing包中的那些图形界面组件)
* 2. 事件()
* 3. 监听器
* 4. 事件处理
*
*/
private void myEvent() {
//对Frame退出事件处理
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

// 让按钮具备退出程序的功能
/*
* 按钮就是事件源。 那么选择哪个监听器呢? 通过关闭窗体示例了解到,想要知道哪个组件具备什么样的特有监听器。 需要查看该组件对象的功能。
* 通过查阅button的描述。发现按钮支持一个特有监听addActionListener。
*/
btn.addActionListener(new ActionListener() {
private int count = 1;

public void actionPerformed(ActionEvent e) {
Button b = (Button) e.getSource();

Frame f1 = (Frame) b.getParent();

f1.add(new Button("button-" + count++));
f1.validate();
}
});
}

public static void main(String[] args) {
new FrameDemo();
}
}
//简易版记事本
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class MyMenuTest {

/**
* 定义需要的组件
*/
private Frame f;
private MenuBar bar;
private TextArea ta;
private Menu fileMenu;
private MenuItem openItem, saveItem, closeItem;

//定义文件打开 与保存对话框
private FileDialog openDia, saveDia;

private File file;

MyMenuTest() {
init();
}

public void init() {
f = new Frame("my window");
f.setBounds(300, 100, 650, 600);

bar = new MenuBar();

ta = new TextArea();

fileMenu = new Menu("File");

openItem = new MenuItem("Open File");
saveItem = new MenuItem("Save");
closeItem = new MenuItem("Exit");

fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(closeItem);
bar.add(fileMenu);

f.setMenuBar(bar);//将菜单栏添加到Frame中

openDia = new FileDialog(f, "我要打开", FileDialog.LOAD);
saveDia = new FileDialog(f, "我要保存", FileDialog.SAVE);

f.add(ta);
myEvent();

f.setVisible(true);

}

private void myEvent() {

//对保存文件菜单事件处理
saveItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
if (file == null) {
saveDia.setVisible(true);

String dirPath = saveDia.getDirectory();
String fileName = saveDia.getFile();
if (dirPath == null || fileName == null)
return;
file = new File(dirPath, fileName);
}

try {
BufferedWriter bufw = new BufferedWriter(new FileWriter(file));

String text = ta.getText();

bufw.write(text);
bufw.close();
} catch (IOException ex) {
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;

ta.setText("");
file = new File(dirPath, fileName);

try {
BufferedReader bufr = new BufferedReader(new FileReader(file));

String line = null;

while ((line = bufr.readLine()) != null) {
ta.append(line + "\r\n");
}

bufr.close();
} catch (IOException ex) {
throw new RuntimeException("读取失败");
}

}
});

//对文件退出菜单事件处理
closeItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] args) {
new MyMenuTest();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gui