------ android培訓、java培訓、java學習型技術博客、期待與您交流! ----------
圖形化界面
1 概念:
GUI是Graphical User Interface的縮寫,圖形用戶接口
CLI是Command line User Interface的縮寫 ,命令行用戶接口,就是常見的Dos命令行操作。需要記憶一些常用的命令,操作不直觀。
如:創建文件夾,或者刪除文件夾等
2 Awt和Swing:
Java爲GUI提供的對象都存在java.Awt和javax.Swing兩個包中。
java.Awt:Abstract Window ToolKit (抽象窗口工具包),依賴於本地系統平臺,如顏色樣式顯示。屬重量級控件。
javax.Swing:在AWT的基礎上,建立的一套圖形界面系統,其中提供了更多的組件,而且完全由Java實現。
增強了移植性,跨平臺,屬輕量級控件。
3 繼承關係:
Component:是GUI圖形界面的組成單元。
|--Button:按鈕
|--Label:標籤
|--Checkbox:檢查框
|--TextComponent:文本組件
|--TextArea:文本區
|--TextField:文本字段
|--Container:爲容器,是一個特殊的組件,該組件中可以通過add方法添加其它組件或容器進來。
|--Window:窗口
|--Panel:鑲嵌板
|--Frame:框架
|--Dialog:對話
|--FileDialog:文件對話框
4 佈局管理:
FlowLayout(流式佈局管理器):從左到右的順序排列。Panel默認的佈局管理器。
BorderLayout(邊界佈局管理器):東,南,西,北,中。Frame默認的佈局管理器。
GridLayout(網格佈局管理器):規則的矩陣
GridBagLayout(網格包佈局管理器):非規則的矩陣
CardLayout(卡片佈局管理器):選項卡
5 圖形演示
鍵盤事件
package cn.itcast.gui;
import java.awt.*;
import java.awt.event.*;
public class FrameDemo {
public static void main(String[] args) {
Frame f = new Frame("鍵盤事件");
f.setVisible(true);
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
f.setBounds((width - 550) / 2, (height - 450) / 2, 550, 450);
f.setBackground(new Color(204, 232, 207));//CMYK
f.setLayout(null);
//添加一個組件,文本框 TextFiled
TextField tf = new TextField();
tf.setBounds(100, 100, 100, 30);
//void setEchoChar(char c)
tf.setEchoChar('*');
f.add(tf);
//爲文本框,添加鍵盤監聽
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
//e.setKeyChar('*');
//System.out.println("!!!!!!!!");
/* char c = e.getKeyChar();
int x = e.getKeyCode();
System.out.println(c+"..."+x);*/
int code = e.getKeyCode();
/*if(!(code>= KeyEvent.VK_0 && code <= KeyEvent.VK_9)){
//System.out.println("你按下的是數字");
e.consume();
}*/
//實現ctrl+enter
if(e.isControlDown() && code==KeyEvent.VK_ENTER){
System.out.println("按下了組合鍵");
}
}
});
}
}
鼠標事件
package cn.itcast.gui;
import java.awt.*;
import java.awt.event.*;
public class FrameDemo1 {
public static void main(String[] args) {
Frame f = new Frame("鼠標事件");
f.setVisible(true);
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
f.setBounds((width - 550) / 2, (height - 450) / 2, 550, 450);
f.setBackground(new Color(204, 232, 207));//CMYK
f.setLayout(null);
//窗體添加一個按鈕
Button but = new Button("確定");
but.setBounds(100, 100, 80, 30);
f.add(but);
//按鈕註冊鼠標事件、
but.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){
if(e.getClickCount()==10)
System.out.println("點擊了確按鈕");
}
public void mouseEntered(MouseEvent e) {
System.out.println("鼠標移入到組件中");
}
public void mouseExited(MouseEvent e) {
System.out.println("鼠標離開組件");
}
});
}
}
對話框
package cn.itcast.gui;
import java.awt.*;
import java.awt.event.*;
public class FrameDemo2 {
public static void main(String[] args) {
Frame f = new Frame("對話框");
f.setVisible(true);
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
f.setBounds((width - 550) / 2, (height - 450) / 2, 550, 450);
f.setBackground(new Color(204, 232, 207));//CMYK
f.setLayout(null);
Button but = new Button("確定");
but.setBounds(100, 100, 80, 30);
f.add(but);
//對話框組件
final Dialog d = new Dialog(f,"錯誤提示對話框",true);
d.setLayout(null);
d.setBounds(200, 100, 500, 300);
//添加一個標籤Lable
Label l = new Label();
d.add(l);
l.setText("你選擇的人是不合適的");
l.setBounds(100, 100, 200, 40);
l.setFont(new Font("微軟雅黑",Font.BOLD,20));
//註冊按鈕的點擊事件
but.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){
d.setVisible(true);
}
});
//對話框的窗體事件
d.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e){
d.setVisible(false);
}
});
}
}
菜單
package cn.itcast.gui;
/*
* 菜單
*/
import java.awt.*;
import java.awt.event.*;
public class FrameDemo3 {
public static void main(String[] args) {
Frame f = new Frame("菜單演示");
f.setVisible(true);
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
f.setBounds((width - 550) / 2, (height - 450) / 2, 550, 450);
f.setBackground(new Color(204, 232, 207));//CMYK
f.setLayout(null);
//創建Menubar對象
MenuBar mb = new MenuBar();
f.setMenuBar(mb);
Menu file = new Menu("文件");
Menu edit = new Menu("編輯");
mb.add(file);
mb.add(edit);
//建立MenuItem
MenuItem open = new MenuItem("打開");
MenuItem save = new MenuItem("保存");
file.add(open);
file.add(save);
//子菜單,對編輯菜單進行設置,添加子菜單,刪除--》刪除選定
Menu delete = new Menu("刪除");
//是將Menu對象,添加到另一個Menu對象
edit.add(delete);
//建立刪除選定
MenuItem deleteOk = new MenuItem("刪除選定");
delete.add(deleteOk);
delete.add(new MenuItem("刪除選定的行"));
}
}
/* open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("打開菜單");
}
});*/
事件列表
package cn.itcast.guifilelist;
public class FileListTest {
public static void main(String[] args) {
new FileList();
}
}
package cn.itcast.guifilelist;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class FileList {
public FileList(){
init();
}
//定義窗體
private Frame frm ;
//定義用戶輸入的文本框
private TextField tf ;
//定義按鈕
private Button but ;
//定義展示文件列表的多行文本
private TextArea ta ;
//定義對話框
private Dialog da ;
//對話框上的文本標籤label 確定按鈕
private Label lbl;
private Button butDa ;
//定義獲取屏幕分辯率的方法
private static final int width = Toolkit.getDefaultToolkit().getScreenSize().width;
private static final int height = Toolkit.getDefaultToolkit().getScreenSize().height;
private void init(){
frm = new Frame("文件列表顯示");
frm.setBounds((width-500)/2, (height-550)/2, 500, 550);
frm.setBackground(new Color(204, 232, 207));
frm.setLayout(null);
frm.setVisible(true);
//窗體的初始化定義完畢
//用戶輸入文本框初始化定義
tf = new TextField();
tf.setBounds(50, 60, 300, 22);
frm.add(tf);
//用戶的確定按鈕
but = new Button("確定");
but.setBounds(380, 60, 50, 22);
frm.add(but);
//顯示文件列表的區域
ta = new TextArea();
ta.setBounds(50, 100, 380, 420);
frm.add(ta);
//對話框初始化
da = new Dialog(frm,"錯誤的提示",true);
da.setBounds((width-400)/2, (height-100)/2, 400, 100);
butDa = new Button("確定");
myEvent();
}
//定義方法,處理事件
private void myEvent(){
//對窗體添加窗體事件
frm.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e){System.exit(0);}
});
//對確定按鈕,進行事件的添加
but.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){
//調用一個方法,專門處理文件的顯示
fileList();
}
});
//對話框的關閉效果
da.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){da.setVisible(false);}
});
//對話框按鈕添加鼠標事件,關閉對話框
butDa.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){ da.setVisible(false);}
});
//對文本框添加鍵事件
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
int code = e.getKeyCode();
if(code==KeyEvent.VK_ENTER)
fileList();
}
});
}
//處理鼠標點擊後的文件顯示
private void fileList(){
String path = tf.getText();
if("".equals(path)||path==null)
return;
//將輸入的文本內容,封裝成File對象
File f = new File(path);
if(!f.exists()){
//對話框出現了
da.setLayout(null);
lbl = new Label();
lbl.setText("您輸入的"+path+"不存在");
lbl.setBounds(70, 40, 200, 30);
da.add(lbl);
butDa.setBounds(120, 72, 50, 25);
da.add(butDa);
da.setVisible(true);
}else{
ta.setText("");
String line = null;
String os = System.getProperty("os.name");
if(os.substring(0, 7).equals("Windows"))
line = "\r\n";
else
line = "\r";
String[] str = f.list();
//System.out.println(str);
for(String s : str){
// ta.setText(s);
ta.append(s+line);
}
}
}
}
模仿記事本
package cn.itcast.notepad;
public class NotepadTest {
public static void main(String[] args) {
new Notepad();
}
}
package cn.itcast.notepad;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Notepad {
public Notepad() {
init();
}
// 定義窗體容器
private Frame frm;
//定義菜單酒吧
private MenuBar mb;
//定義文件菜單
private Menu file;
//定義子菜單,保存,打開
private MenuItem save,open;
//定義多行文本地域
private TextArea ta ;
//文件對話框
private FileDialog fd ;
private String path;
private String fileName;
// 定義獲取屏幕分辯率的方法
private static final int width = Toolkit.getDefaultToolkit()
.getScreenSize().width;
private static final int height = Toolkit.getDefaultToolkit()
.getScreenSize().height;
private void init() {
frm = new Frame("模仿記事本");
frm.setBounds((width - 800) / 2, (height - 600) / 2, 800, 600);
frm.setBackground(new Color(204, 232, 207));
frm.setLayout(null);
frm.setVisible(true);
//初始化菜單
mb = new MenuBar();
frm.setMenuBar(mb);
file = new Menu("文件");
save = new MenuItem("保存");
open = new MenuItem("打開");
mb.add(file);
file.add(open);
file.add(save);
//初始化文本區域
ta = new TextArea();
ta.setBounds(30, 60, 730, 500);
frm.add(ta);
myEvent();
}
private void myEvent() {
//窗體事件
frm.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//打開菜單添加事件監聽,活動事件
open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//打開 windows資源管理器對話框,FileDialog
fd = new FileDialog(frm,"打開文件",FileDialog.LOAD);
fd.setVisible(true);
//如何知道用戶選擇什麼文件,或者是什麼也沒有選呢
path = fd.getDirectory();//獲取目錄,點擊取消 返回null
fileName = fd.getFile();//獲取文件名
//進行健壯性判斷
if(path == null || fileName == null)
return ;
//用戶確實選擇了文件,IO技術讀取文件
readFile(path, fileName);
}
});
//保存菜單添加事件監聽
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(path==null || fileName==null ){
fd = new FileDialog(frm,"保存文件",FileDialog.SAVE);
fd.setVisible(true);
path = fd.getDirectory();
fileName = fd.getFile();
}
if(path == null || fileName == null)
return;
writeFile(path, fileName);
}
});
}
//保存文件的方法,保存用戶指定的文件
private void writeFile(String path,String fileName){
//將路徑和文件名封裝成File對象
File f = new File(path,fileName);
FileWriter fw = null;
try{
fw = new FileWriter(f);
fw.write(ta.getText());
fw.flush();
}catch(IOException e){
e.printStackTrace();
throw new RuntimeException("保存失敗");
}finally{
try{
if(fw!=null)
fw.close();
}catch(IOException e){
}
}
}
//讀取用戶選擇的文件,並將文件顯示在文本區域內
private void readFile(String path,String fileName){
//將文件和目錄封裝成File對象
File f = new File(path,fileName);
//IO技術封裝文件,並讀取文件,追加到文本區域
BufferedReader bfr = null;
try{
bfr = new BufferedReader(new FileReader(f));
String line = null;
ta.setText("");
while((line = bfr.readLine())!= null){
ta.append(line+"\r\n");
}
}catch(IOException e){
e.printStackTrace();
throw new RuntimeException("文件讀取失敗");
}finally{
try{
if(bfr!=null)
bfr.close();
}catch(IOException e){
throw new RuntimeException("文件關閉失敗");
}
}
}
}
------ android培訓、java培訓、java學習型技術博客、期待與您交流! ----------