歡迎到個人簡書查看個人文集java
GUI
是圖形用戶界面,在Java
中,圖形用戶界面咱們用GUI
表示,而GUI
的完整英文爲: Graphical User Interface
(圖形用戶接口), 所謂圖形用戶界面就是以圖形的方式來顯示你計算機的操做界面, 咱們計算機中操做的界面就是 咱們Java
中常說的圖形用戶界面, 這樣的操做簡單明瞭.程序員
CLI
的英文爲Command Line User Interface
, 是命令行用戶接口, 命令行, 這就是咱們程序員經常熟悉的, 常見的Dos
命令行操做, 這些經常使用命令式須要記住的, CLI
的操做就不那麼直觀了.app
在Java
中GUI
提供了對象在 java.awt
和 javax.swing
兩個包中ide
在早年中, Java.awt爲抽象窗口工具包, 英文爲 Abstract Window ToolKit
, 須要調用本地的系統方法來實現功能需求,屬於重量級的控件.工具
而在awt
的基礎上,建立了一套圖形界面系統, 從而提供了更多的組件, 並且徹底是由Java實現的, 加強了移植性, 屬於輕量級的控件. 有本身的顯示效果, 顯示本身的形狀, 平臺要求低了, 輕量級和體統嵌入的比較淺.佈局
繼承關係spa
Button
按鈕,Label
標籤,Checkbox
複選框,TextComponent
文本組件,TextArea
文本區域,TextField
文本框.命令行
組件裏面還能放入組件,在Java中咱們叫容器. window
窗體, Panel
面板 Frame
小窗口,Dialog
對話框,FileDialog
文件對話框3d
GUI
佈局code
Flow
流式佈局
掃雷的格式佈局
佈局管理
常見的佈局管理器:
流式佈局管理: FlowLayout
, 是從左到右的排列, 是Panel
默認的佈局管理.
邊界佈局: 東南西北,中, 是Frame
默認的佈局管理
網格佈局管理: GridLayout
卡片佈局管理: CardLayout
網格包佈局管理: GridBagLayout
GUI
簡單的小窗體
java.awt
包含用於建立用戶界面和繪製圖形圖像的全部類.
java.awt
類 Component
java.lang.Object
-> java.awt.Component
全部已實現的接口:
ImageObserver, MenuContainer, Serializable
component
是一個具備圖形表示能力的對象.
java.awt
類 Frame
java.lang.Object
-> java.awt.Component
-> java.awt Container
-> java.awt.Window
-> java.awt.Frame
實現的接口:
ImageObserver, MenuContainer, Serializable, Accessible
直接已知的子類:
JFrame
Frame
是帶有標題和邊框的頂層窗口.
import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.TextField; 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.awt.event.WindowListener; public class FrameDemo { public static void main(String[] args) { //1,建立一個窗體。Frame Frame f = new Frame("my frame"); //2, 對窗體進行基本設置。 f.setSize(500, 400); f.setLocation(400, 200); //設置佈局。 f.setLayout(new FlowLayout()); //給窗體添加組件。 Button but = new Button("my button"); //加入一個文本框組件。 TextField tf = new TextField(40); //將組件添加到窗體中。 f.add(tf); f.add(but); //1,在按鈕上添加所需的監聽器。 but.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("按鈕被觸發了....."+e); System.exit(0); } }); f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.out.println("window closing"); System.exit(0); } @Override public void windowOpened(WindowEvent e) { System.out.println("孔雀開屏!window open"); } }); but.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if(e.getClickCount() == 2){ System.out.println("mouse double click"); } } }); tf.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { //1,如何獲取錄入的內容。經過鍵盤事件對象獲取。 // char key = e.getKeyChar(); // int code = e.getKeyCode(); // System.out.println(code+"...."+KeyEvent.getKeyText(code)); // int code = e.getKeyCode(); // if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){ // System.out.println("必須是0-9數字"); // e.consume();//直接取消默認處理方式。 // } if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){ System.out.println("ctrl+enter run"); } } }); //3,讓窗體顯示。 f.setVisible(true); System.out.println("over"); } }
事件監聽機制
Event
Listener
Button
java.awt
classButton
java.lang.Object
-> java.awt.Component
-> java.awt.Button
監聽事件:
addActionListener(ActionListener l)
添加指定的動做偵聽器以今後按鈕接收動做事件。
MouseListener
public interface MouseListener extends EventListener
用於在組件上接收「有趣」鼠標事件(按,釋放,單擊,輸入和退出)的偵聽器界面。
方法的詳細信息:
mouseClicked
void mouseClicked(MouseEvent e)
在組件上單擊鼠標按鈕時調用
mousePressed
void mousePressed(MouseEvent e)
在組件上按下鼠標時調用
mouseReleased
void mouseReleased(MouseEvent e)
在組件上釋放鼠標時調用
mouseEntered
void mouseEntered(MouseEvent e)
當鼠標進入組件時調用
mouseExited
void mouseExited(MouseEvent e)
當鼠標退出組件時調用
圖形化界面的工具
//1,獲取路徑。經過文本框對象完成。 String str_dir = jTextField1.getText(); //2,將字符串路徑封裝成File對象。 File dir = new File(str_dir); //判斷。 if(dir.exists()&&dir.isDirectory()){ //清空文本區域。 jTextArea1.setText(""); //3,獲取文件名稱列表。 String[] names = dir.list(); for(String name :names){ //4,將名字顯示到文本區域。 jTextArea1.append(name+LINE_SEPARATOR); } }
public class JFileChooser extends JComponent implements Accessible
事件監聽機制流程:
菜單繼承
MenuComponent
MenuBar,MenuItem,Menu
達叔小生:日後餘生,惟獨有你 You and me, we are family ! 90後帥氣小夥,良好的開發習慣;獨立思考的能力;主動而且善於溝通 簡書博客: 達叔小生 https://www.jianshu.com/u/c785ece603d1