---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
GUI是Java中提供的一个图形化界面的操作类,其中布局方式有:
BorderLayout (边界布局)、FlowLayout(线性布局)、BoxLayout()、CardLayout(卡片布局)、GridLayout(表格布局)等等,布局间是可以进行嵌套使用的,此时需要Panel(面板)。
在GUI中,开发步骤为:1.组件的初始化,布局 2.设置监听 3.事件处理
package com.itheima.gui;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.FileReader;
public class GUIDemo {
private Frame frame;
private MenuBar mBar;
private TextArea mTextArea;
private Menu menu1,menu2;
private MenuItem item1,item2,item3;
private FileDialog dialog1,dialog2;
private Button b1,b2;
private Dialog d ;
private Label l;
private Panel p;
public GUIDemo(){
init();
}
//初始化组件,设置监听
private void init(){
frame = new Frame();
frame.setTitle("记事本");
mTextArea = new TextArea(10, 100);
mBar = new MenuBar();
item1 = new MenuItem("new");
item2 = new MenuItem("open");
item3 = new MenuItem("save");
dialog1 = new FileDialog(frame, "打开", FileDialog.LOAD);
dialog2 = new FileDialog(frame, "保存", FileDialog.SAVE);
menu1 = new Menu("file");
l = new Label("exit...........?");
d = new Dialog(frame);
d.setLayout(new BorderLayout());
d.setBounds(350, 250, 250, 95);
b1 = new Button("ok");
b2 = new Button("cancle");
p = new Panel(new FlowLayout());
p.add(b1);
p.add(b2);
d.add(l,BorderLayout.NORTH);
d.add(p,BorderLayout.CENTER);
d.setTitle("确定退出吗?");
d.setAutoRequestFocus(true);
menu1.add(item1);
menu1.add(item2);
menu1.add(item3);
menu2 = new Menu("edit");
frame.setBounds(300, 200, 500, 400);
frame.setLayout(new BorderLayout());
frame.setLocation(300, 200);
mBar.add(menu1);
mBar.add(menu2);
frame.setMenuBar(mBar);
frame.add(mTextArea);
frame.setFocusable(true);
setEventListener();
frame.setVisible(true);
}
//设置监听器
private void setEventListener(){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
item1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mTextArea.setText("");
}
});
mTextArea.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
mTextArea.setFocusable(false);
}
}
});
mTextArea.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
mTextArea.setFocusable(true);
}
});
frame.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
d.setVisible(true);
}
}
});
d.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
d.setVisible(false);
}
});
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
d.setVisible(false);
}
});
item2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mTextArea.setText("");
dialog1.setVisible(true);
String filePath = dialog1.getDirectory()+dialog1.getFile();
if(dialog1.getDirectory()==null || dialog1.getFile() == null){
return;
}
try {
BufferedReader mReader = new BufferedReader(new FileReader(filePath));
String line = null;
while((line = mReader.readLine())!= null){
mTextArea.append(line);
mTextArea.append(System.getProperty("line.separator"));
}
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
item3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialog2.setVisible(true);
}
});
}
public static void main(String[] args) {
new GUIDemo();
}
}
关于GUI中的API没有详细查看,但是重要的是图像界面的编程思想。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net