Java學(xué)習(xí)之GUI(圖形用戶界面)

一横朋、GUI 概述

1、概述:

1炊甲、GUI:Graphical User Interface,即圖形用戶界面欲芹,用于計算機與用戶交互的一種方式

2卿啡、計算機與用戶交互的形式:GUI和CLI
GUI: Graphical User Interface,圖形用戶接口菱父,用圖形方式颈娜,來顯示計算機操作界面,方便直觀浙宜。
CLI: Command Line User Interface官辽,命令行用戶接口,即常見的Dos命令行操作粟瞬,須記住一些命令同仆,不直觀。

3裙品、java也將這種界面封裝為對象俗批,其中的對象都放在了兩個包中:java.Awt包和javax.Swing包。
java.Awt包:Abstract Window Toolkit市怎,即抽象窗口工具箱岁忘。要調(diào)用本地系統(tǒng)方法實現(xiàn)功能,屬重量級控件区匠。
javax.Swing包:在AWT的基礎(chǔ)上建立的一套圖形界面系統(tǒng)干像,其中提供了更多的組件,且完全有java實現(xiàn),增強了移植性麻汰,屬輕量級控件速客。

2、繼承體系:

繼承體系示意圖

Container是一個容器什乙,通過add方法添加組件

3挽封、布局管理器:

1、布局:容器中的組件排列方式

2臣镣、常見的布局管理器:
1)FlowLayout:流式布局管理器辅愿,從左向右排列,是Panel默認的布局管理器
2)BorderLayout:邊界式布局管理器忆某,東南西北中的排列方式点待,是Frame的默認布局管理器
3)GridLayout:網(wǎng)格式布局管理器,規(guī)則的矩陣
4)CardLayout:卡片式布局管理器弃舒,即選項卡
5)GridBayLayout:網(wǎng)格包布局管理器癞埠,非規(guī)則矩陣

3、如果存在多種布局方式聋呢,如何創(chuàng)建窗體界面呢苗踪?步驟:
1)先將窗體Frame進行大區(qū)域的劃分,設(shè)置其布局管理器削锰,加入面板Panel
2)將組建加入Panel通铲,設(shè)置面板的布局管理器

示例:

import java.awt.*;  
import java.awt.event.*;  
  
class FrameDemo{  
    //定義該圖形中所需的組件引用  
    private Frame f;  
    private Button but;  
    FrameDemo(){  
        init();  
    }  
    //初始化組件  
    public void init(){  
        //對frame進行基本設(shè)置  
        f = new Frame("my frame");  
        f.setBounds(300,100,600,500);  
        f.setLayout(new FlowLayout());  
  
        but = new Button("button");  
        //將組件添加進窗體  
        f.add(but);  
        //加載一下窗體上事件  
        myEvent();  
        //顯示窗體  
        f.setVisible(true);  
    }  
    //窗體事件  
    private void myEvent(){  
        f.addWindowListener(new WindowAdapter(){  
            public void windowClosing(WindowEvent e){  
                System.exit(0);  
        }});  
        //讓按鈕具備退出程序的功能  
        but.addActionListener(new ActionListener(){  
            public void actionPerformed(ActionEvent e){  
                System.out.println("button 關(guān)閉的窗口");  
                System.exit(0);  
        }});  
    }  
    public static void main(String[] args)   
    {  
        new FrameDemo();  
    }  
}

4、創(chuàng)建圖形化界面思路:

1器贩、創(chuàng)建Frame容器:Frame f = new Frame("my Frame");可設(shè)置標(biāo)題

2颅夺、對窗體進行設(shè)置:如大小,位置蛹稍,布局等吧黄。
f.setSize(int wight,int hight);
f.setLocation(int x,int y)唆姐,設(shè)置橫縱坐標(biāo)拗慨;
f.setBounds(int wight,int hight,int x,int y),者直接用這個對大小和位置設(shè)置
f.setLayout(Layout layout)奉芦,參數(shù)為指定的布局管理器胆描,如FlowLayout

3、定義組件:如Button b = new Button(“Button”)仗阅,可設(shè)置組件的名稱

4、將組件通過窗體的add方法添加到窗體中国夜,f.add(b)减噪;

5、讓窗體顯示,通過setVisible(boolean b)筹裕,通過設(shè)置參數(shù)是true還是false是否顯示窗體

5醋闭、事件監(jiān)聽機制

一)的特點:
1、事件源(組件):awt或swing包中的那些圖形界面組件

2朝卒、事件(Event):每一個事件源都有自己特有的對應(yīng)的時間和共性事件

3证逻、監(jiān)聽器(Listener):將可觸發(fā)某一事件的動作(不止一個),都封裝到監(jiān)聽器中抗斤。注意囚企,是動作封裝到監(jiān)聽器中。

4瑞眼、事件處理:引發(fā)事件后的處理方式龙宏。

事件處理示意圖

二)說明:
前三個在java中都已將定義好了,直接獲取其對象來用即可伤疙,我們需要做的就是對產(chǎn)生的動作進行處理银酗,步驟:
1、明確監(jiān)聽器(Frame)將監(jiān)聽器注冊到上面徒像,通過方法:addWindowListener(WindowListener w)
2黍特、注意:若用子類實現(xiàn)WindowListener接口,就需要覆蓋其中的7個方法锯蛀,可只用到其中的關(guān)閉動作灭衷,其他動作未用到,就必須重寫全部谬墙,因為WindowLister的子類WindowAdapter以實現(xiàn)此接口今布,并覆蓋了其中所有方法,則只需繼承WindowAdapter拭抬,覆蓋需要的方法即可部默。
3、明確事件造虎,并對事件進行處理傅蹂,其實,添加什么監(jiān)聽器就需要添加什么事件算凿。

示例一:鼠標(biāo)和鍵盤事件

import java.awt.*;  
import java.awt.event.*;  
class MouseAndKeyEvent  
{  
    //創(chuàng)建全局變量  
    private Frame f = null;  
    private Button but = null;  
    private TextField tf;  
    //初始化窗體  
    MouseAndKeyEvent(){  
        init();  
    }  
    //創(chuàng)建窗體  
    public void init(){  
        f = new Frame("my frame");  
        f.setBounds(300,200,600,500);  
        f.setLayout(new FlowLayout());  
        tf = new TextField(20);  
        but = new Button("button");  
        f.add(tf);  
        f.add(but);  
        myEvent();  
        f.setVisible(true);  
    }  
    //注冊事件  
    private void myEvent(){  
        //添加監(jiān)聽器份蝴,引發(fā)退出事件  
        f.addWindowListener(new WindowAdapter(){  
            public void windowClosing(WindowEvent e){  
                System.exit(0);  
        }});  
        //給but添加一個活動監(jiān)聽器  
        but.addActionListener(new ActionListener(){  
            public void actionPerformed(ActionEvent e){  
                System.out.println("action ok");  
        }});  
        //給文本框添加一個監(jiān)聽器,引發(fā)鍵盤事件  
        tf.addKeyListener(new KeyAdapter(){  
            public void keyPressed(KeyEvent e){  
                int code = e.getKeyCode();  
                System.out.println(e.getKeyChar() + "..." + e.getKeyChar());  
                if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9)){  
                    e.consume();  
                    System.out.println(code + "是非法的");  
        }});  
  
        //鼠標(biāo)事件  
        //myMouseEvent();  
        //鍵盤事件  
        myKeyEvent();  
    }  
    //鼠標(biāo)事件  
    public void myMouseEvent(){  
        //給but添加一個鼠標(biāo)監(jiān)聽器  
        but.addMouseListener(new MouseAdapter(){  
            private int count = 1;  
            private int clickCount = 1;  
            private int clickCount2 = 1;  
            public void mouseEntered(MouseEvent e){  
                System.out.println("鼠標(biāo)進入該組件" + count++);  
            }  
            public void mouseClicked(MouseEvent e){  
                if(e.getClickCount()==2)  
                    System.out.println("雙擊動作"  + clickCount2++);  
                    //System.out.println("點擊動作" + clickCount++);  
        }});  
    }  
    //鍵盤事件  
    public void myKeyEvent(){  
        //給but添加一個鍵盤監(jiān)聽器  
        but.addKeyListener(new KeyAdapter(){  
            public void keyPressed(KeyEvent e)  
            {  
                //組合鍵ctrl鍵和回車鍵同時觸發(fā)  
                if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)  
                    System.out.println("ctrl+enter is runing");  
                //System.out.println(e.getKeyChar() + "..." + e.getKeyCode());  
                //System.out.println(KeyEvent.getKeyText(e.getKeyCode()) + "..." + e.getKeyChar());  
            }  
        });  
    }  
  
    public static void main(String[] args)   
    {  
        new MouseAndKeyEvent();  
    }  
}

二氓轰、應(yīng)用

1婚夫、何時需要產(chǎn)生對話框:

此對象時需要在調(diào)用時,才創(chuàng)建對象的署鸡,如:當(dāng)在誤操作的時候案糙,就會出現(xiàn)提示錯誤信息的對話框限嫌,此時才創(chuàng)建的這個對象。

2时捌、菜單:Menu

1怒医、Menu:菜單,Menu extends MenuItem奢讨;有右三角的圖標(biāo)存在稚叹,可添加Menu和MenuItem
2、MenuBar:菜單欄拿诸,可添加菜單和條目
3扒袖、MenuItem:條目,及菜單項目佳镜,無右三角的圖標(biāo)存在僚稿,是最終的菜單項。
4蟀伸、菜單的事件處理和組件一樣蚀同,可以對類型為MenuItem和Menu的對象這個事件源添加活動監(jiān)聽ActionListener,并進行相關(guān)的事件處理啊掏。
示例:

3蠢络、jar包雙擊執(zhí)行:

既然是圖形化界面,就需要通過圖形化界面的形式運行程序迟蜜,而不是是用Dos命令行執(zhí)行刹孔,那么如何通過雙擊程序就執(zhí)行程序呢?這就需要將程序的class文件打包娜睛,
步驟如下:
1髓霞、首先要在Java文件中導(dǎo)入一個包,沒有則需創(chuàng)建一個包畦戒,如package mymenu;

2方库、生成包:通過編譯javac -d c:\myclass MyMenu.java,此時則在c盤下的myclass文件夾下生成了所有的.class文件

3障斋、在此目錄下新建一個文件纵潦,如1.txt或者其他任意名稱任意擴展名的文件都可,然后在其中編輯固定的格式:“Main-Class: mymenu.MenuDemo”垃环,只寫引號中的內(nèi)容邀层。需要需要在冒號后有一個空格,在文件末尾要回車遂庄。

4寥院、編譯:jar -cvfm my.jar 1.txt mymenu即可。如果想添加其他信息涛目,則直接編譯jar即可得出相應(yīng)的命令

5只磷、此時雙擊即可執(zhí)行经磅。

說明:
1)在固定格式中:
a.如果無空格:在編譯的時候,就會報IO異常钮追,提示無效的頭字段,即invalid header field阿迈。這說明1.txt在被IO流讀取元媚。
b.如果無回車:在列表清單.MF中不會加入相應(yīng)的加載主類的信息,也就是說配置清單的屬性主類名稱不會加載進清單中苗沧,也就不會執(zhí)行刊棕。

2)jar文件必須在系統(tǒng)中注冊,才能運行待逞。注冊方法如下:
A.對于XP系統(tǒng):
a.打開任意對話框甥角,在菜單欄點擊工具按鈕,選擇文件夾選項
b.選擇新建--->擴展名识樱,將擴展名設(shè)置為jar嗤无,確定
c.選擇高級,可更改圖標(biāo)怜庸,然后點擊新建当犯,命名為open,
d.在用于可執(zhí)行應(yīng)用程序中割疾,點瀏覽嚎卫,將jdk下的bin的整個文件路徑添加進來,并在路徑后添加-jar即可宏榕。
B.對于win7系統(tǒng):
a.改變打開方式:右擊.jar文件拓诸,點擊打開方式,選擇默認程序為jdk下bin中的javaw.exe應(yīng)用程序麻昼。
b.修改關(guān)聯(lián)程序的注冊表:打開注冊表(win+r)奠支,找到注冊表路徑\HKEY_CLASSES_ROOT\Aplications\javaw.exe\shell\open\command下的字符串值,右擊點修改涌献,將值改為:"C:\Program Files\Java\jre6\bin\javaw.exe" -jar "%1"其中-jar前的路徑就是javaw.exe的路徑胚宦。保存
c.雙擊即可執(zhí)行jar程序,如果仍不能執(zhí)行燕垃,則需下載最新版的jdk枢劝。

示例一:
打開指定目錄下的目錄條目

import java.awt.*;  
import java.awt.event.*;  
import java.io.*;  
  
class  MyWindowDemo  
{  
    //創(chuàng)建全局變量  
    private Frame f;  
    private Button but;  
    private TextField tf;  
    private TextArea ta;  
  
    private Dialog d;  
    private Label lab;  
    private Button okBut;  
  
    //構(gòu)造函數(shù),初始化窗體  
    MyWindowDemo()  
    {  
        init();  
    }  
    //創(chuàng)建窗體和組件卜壕,并將事件添加進來  
    public void init()  
    {  
        //設(shè)置窗體  
        f = new Frame("my window");  
        f.setBounds(300,200,600,500);  
        f.setLayout(new FlowLayout());  
        //創(chuàng)建組件  
        but = new Button("轉(zhuǎn)到");  
        tf = new TextField(60);  
        ta = new TextArea(25,75);  
  
        d = new Dialog(f,"提示信息-self",true);  
        d.setBounds(300,100,300,150);  
        d.setLayout(new FlowLayout());  
        lab = new Label();  
        okBut = new Button("確定");  
  
        //將組件添加到窗體  
        f.add(tf);  
        f.add(but);  
        f.add(ta);  
          
        d.add(lab);  
        d.add(okBut);  
  
        //添加事件  
        myEvent();  
        //設(shè)置窗體可見  
        f.setVisible(true);  
    }  
    //常見引發(fā)的時間  
    private void myEvent()  
    {  
        //給but添加一個活動監(jiān)聽器  
        but.addActionListener(new ActionListener()  
        {  
            public void actionPerformed(ActionEvent e)  
            {  
                showInfo();  
            }  
        });  
        okBut.addActionListener(new ActionListener()  
        {  
            public void actionPerformed(ActionEvent e)  
            {  
                d.setVisible(false);  
            }  
        });  
        //給文本框添加鍵盤事件  
        tf.addKeyListener(new KeyAdapter()  
        {  
            public void keyPressed(KeyEvent e)  
            {  
                if(e.getKeyCode()==KeyEvent.VK_ENTER)  
                    showInfo();  
            }  
        });  
        //關(guān)閉窗體事件  
        f.addWindowListener(new WindowAdapter()  
        {  
            public void windowClosing(WindowEvent e)  
            {  
                System.exit(0);  
            }  
        });  
        //給對話框添加一個監(jiān)聽器您旁,關(guān)閉對話框事件  
        d.addWindowListener(new WindowAdapter()  
        {  
            public void windowClosing(WindowEvent e)  
            {  
                d.setVisible(false);  
            }  
        });  
    }  
    //操作文件,對文件夾的內(nèi)容讀取  
    private void showInfo()  
    {  
        String dirPath = tf.getText();  
        File file = new File(dirPath);  
        if(file.exists()&&file.isDirectory())  
        {  
            ta.setText("");  
            String[] names = file.list();  
            for(String name : names)  
            {  
                ta.append(name + "\r\n");  
            }  
        }  
        else  
        {  
            String info = "您輸入的:“"+dirPath+"”是錯誤的路徑轴捎,請重輸";  
            lab.setText(info);  
            d.setVisible(true);  
        }  
    }  
  
    public static void main(String[] args)   
    {  
        new MyWindowDemo();  
    }  
}

示例二:
打開文件鹤盒,將內(nèi)容顯示在文本框中蚕脏,并將寫入文本框中的內(nèi)容保存

/* 
菜單練習(xí) 
 
*/  
package mymenu;  
import java.awt.*;  
import java.awt.event.*;  
import java.io.*;  
public class MenuDemo   
{  
    //設(shè)置全局變量  
    private Frame f;  
    private MenuBar bar;  
    private TextArea ta;  
    private Menu fileMenu;  
    private MenuItem closeMT,submu,openItem,saveItem;  
  
    private FileDialog openDia,saveDia;  
  
    private File file;  
      
    //初始化菜單項  
    MenuDemo()  
    {  
        init();  
    }  
    //初始化窗體和組件  
    public void init()  
    {  
        //初始化窗體frame  
        f = new Frame("my Menu");  
        f.setBounds(300,100,600,500);  
          
        //初始化菜單項  
        bar = new MenuBar();  
        ta = new TextArea();  
        fileMenu = new Menu("文件");  
        submu = new MenuItem("子條目");  
        openItem = new MenuItem("打開");  
        saveItem = new MenuItem("保存");  
        closeMT = new MenuItem("退出");  
          
        //將組件加入到文件菜單這個容器組件中  
        fileMenu.add(submu);  
        fileMenu.add(openItem);  
        fileMenu.add(saveItem);  
        bar.add(fileMenu);  
        f.setMenuBar(bar);  
        fileMenu.add(closeMT);  
  
        openDia = new FileDialog(f,"我要打開",FileDialog.LOAD);  
        saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);  
          
        f.add(ta);  
        //添加事件  
        myEvent();  
        //設(shè)置窗體可見性  
        f.setVisible(true);  
    }  
      
    //添加事件  
    private void myEvent()  
    {  
        //添加窗體監(jiān)聽,關(guān)閉按鈕  
        f.addWindowListener(new WindowAdapter()  
        {  
            public void windowClosing(WindowEvent e)  
            {  
                System.exit(0);  
            }  
        });  
        //添加退出菜單項目的監(jiān)聽侦锯,退出程序  
        closeMT.addActionListener(new ActionListener()  
        {  
            public void actionPerformed(ActionEvent e)  
            {  
                System.exit(0);  
            }  
        });  
        //添加打開和保存文件的監(jiān)聽驼鞭,獲取文件  
        //打開事件  
        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 ;  
                //在打開一個文件前先清空文本框的內(nèi)容  
                ta.setText("");  
                file = new File(dirPath,fileName);  
                BufferedReader bufr = null;  
                try  
                {  
                    //讀取文件中的內(nèi)容  
                    bufr = new BufferedReader(new FileReader(file));  
                    String line = null;  
                    while((line=bufr.readLine())!=null)  
                    {  
                        ta.append(line+"\r\n");  
                    }  
                }  
                catch (IOException ex)  
                {  
                    throw new RuntimeException("讀取失敗");  
                }  
                finally  
                {  
                    try  
                    {  
                        if(bufr!=null)  
                            bufr.close();  
                    }  
                    catch (IOException ex)  
                    {  
                        throw new RuntimeException("關(guān)閉流失敗");  
                    }  
                }  
            }  
        });  
  
        //保存事件  
        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);  
                    BufferedWriter bufw = null;  
                    try  
                    {  
                        //寫入文本框中的內(nèi)容  
                        bufw = new BufferedWriter(new FileWriter(file));  
                        String text = ta.getText();  
                        bufw.write(text);  
                        bufw.flush();                             
                    }  
                    catch (IOException ex)  
                    {  
                        throw new RuntimeException("寫入失敗");  
                    }  
                    finally  
                    {  
                        try  
                        {  
                            if(bufw!=null)  
                                bufw.close();  
                        }  
                        catch (IOException ex)  
                        {  
                            throw new RuntimeException("關(guān)閉流失敗");  
                        }  
                    }  
                }  
            }  
        });  
  
    }  
    public static void main(String[] args)   
    {  
        new MenuDemo();  
    }  
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挣棕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子亲桥,更是在濱河造成了極大的恐慌洛心,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件题篷,死亡現(xiàn)場離奇詭異词身,居然都是意外死亡,警方通過查閱死者的電腦和手機番枚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進店門法严,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人户辫,你說我怎么就攤上這事渐夸。” “怎么了渔欢?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵墓塌,是天一觀的道長。 經(jīng)常有香客問我奥额,道長苫幢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任垫挨,我火速辦了婚禮韩肝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘九榔。我一直安慰自己哀峻,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布哲泊。 她就那樣靜靜地躺著剩蟀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪切威。 梳的紋絲不亂的頭發(fā)上育特,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天,我揣著相機與錄音先朦,去河邊找鬼缰冤。 笑死犬缨,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的棉浸。 我是一名探鬼主播怀薛,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼涮拗!你這毒婦竟也來了乾戏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤三热,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后三幻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體就漾,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年念搬,在試婚紗的時候發(fā)現(xiàn)自己被綠了抑堡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡朗徊,死狀恐怖首妖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情爷恳,我是刑警寧澤有缆,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站温亲,受9級特大地震影響棚壁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜栈虚,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一袖外、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧魂务,春花似錦曼验、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至相艇,卻和暖如春颖杏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坛芽。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工留储, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翼抠,地道東北人。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓获讳,卻偏偏與公主長得像阴颖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子丐膝,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,666評論 2 350

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,851評論 25 707
  • 1.import static是Java 5增加的功能,就是將Import類中的靜態(tài)方法量愧,可以作為本類的靜態(tài)方法來...
    XLsn0w閱讀 1,217評論 0 2
  • 面向?qū)ο笾饕槍γ嫦蜻^程。 面向過程的基本單元是函數(shù)帅矗。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,046評論 0 4
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程偎肃,因...
    小菜c閱讀 6,375評論 0 17
  • 從今天開始記錄陪伴孩子的點點滴滴~5月18日晚老公和兒子一起去機場接我,對于方向感不好的我來說浑此,告訴他們我的位置就...
    有你的生活更美好閱讀 435評論 0 0