java中的图形界面编辑界面_第58节:Java中的图形界面编程-GUI
歡迎到我的簡書查看我的文集
前言:
GUI是圖形用戶界面,在Java中,圖形用戶界面我們用GUI表示,而GUI的完整英文為: Graphical User Interface(圖形用戶接口), 所謂圖形用戶界面就是以圖形的方式來顯示你計算機(jī)的操作界面, 我們計算機(jī)中操作的界面就是 我們Java中常說的圖形用戶界面, 這樣的操作簡單明了.
CLI的英文為Command Line User Interface, 是命令行用戶接口, 命令行, 這就是我們程序員常常熟悉的, 常見的Dos命令行操作, 這些常用命令式需要記住的, CLI的操作就不那么直觀了.
在Java中GUI提供了對象在 java.awt 和 javax.swing 兩個包中
在早年中, Java.awt為抽象窗口工具包, 英文為 Abstract Window ToolKit, 需要調(diào)用本地的系統(tǒng)方法來實現(xiàn)功能需求,屬于重量級的控件.
而在awt的基礎(chǔ)上,創(chuàng)建了一套圖形界面系統(tǒng), 從而提供了更多的組件, 而且完全是由Java實現(xiàn)的, 增強(qiáng)了移植性, 屬于輕量級的控件. 有自己的顯示效果, 顯示自己的形狀, 平臺要求低了, 輕量級和體統(tǒng)嵌入的比較淺.
繼承關(guān)系
Button按鈕,Label標(biāo)簽,Checkbox復(fù)選框,TextComponent文本組件,TextArea文本區(qū)域,TextField文本框.
組件里面還能放入組件,在Java中我們叫容器.
window 窗體, Panel 面板
Frame小窗口,Dialog對話框,FileDialog文件對話框
GUI 布局
Flow 流式布局
掃雷的格式布局
布局管理
常見的布局管理器:
流式布局管理: FlowLayout, 是從左到右的排列, 是Panel默認(rèn)的布局管理.
邊界布局: 東南西北,中, 是Frame默認(rèn)的布局管理
網(wǎng)格布局管理: GridLayout
卡片布局管理: CardLayout
網(wǎng)格包布局管理: GridBagLayout
GUI 簡單的小窗體
java.awt 包含用于創(chuàng)建用戶界面和繪制圖形圖像的所有類.
java.awt 類 Component
java.lang.Object
-> java.awt.Component
所有已實現(xiàn)的接口:
ImageObserver, MenuContainer, Serializable
component 是一個具有圖形表示能力的對象.
java.awt 類 Frame
java.lang.Object
-> java.awt.Component
-> java.awt Container
-> java.awt.Window
-> java.awt.Frame
實現(xiàn)的接口:
ImageObserver, MenuContainer, Serializable, Accessible
直接已知的子類:
JFrame
Frame是帶有標(biāo)題和邊框的頂層窗口.
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,創(chuàng)建一個窗體。Frame
Frame f = new Frame("my frame");
//2, 對窗體進(jìn)行基本設(shè)置。
f.setSize(500, 400);
f.setLocation(400, 200);
//設(shè)置布局。
f.setLayout(new FlowLayout());
//給窗體添加組件。
Button but = new Button("my button");
//加入一個文本框組件。
TextField tf = new TextField(40);
//將組件添加到窗體中。
f.add(tf);
f.add(but);
//1,在按鈕上添加所需的監(jiān)聽器。
but.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("按鈕被觸發(fā)了....."+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,如何獲取錄入的內(nèi)容。通過鍵盤事件對象獲取。
//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數(shù)字");
//e.consume();//直接取消默認(rèn)處理方式。
//}
if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){
System.out.println("ctrl+enter run");
}
}
});
//3,讓窗體顯示。
f.setVisible(true);
System.out.println("over");
}
}
事件監(jiān)聽機(jī)制
事件源-組件
事件 - Event
監(jiān)聽器 - Listener
事件處理
Button
java.awt
classButton
java.lang.Object
-> java.awt.Component
-> java.awt.Button
監(jiān)聽事件:
addActionListener(ActionListener?l)
添加指定的動作偵聽器以從此按鈕接收動作事件。
MouseListener
public interface MouseListener extends EventListener
用于在組件上接收“有趣”鼠標(biāo)事件(按,釋放,單擊,輸入和退出)的偵聽器界面。
方法的詳細(xì)信息:
mouseClicked
void mouseClicked(MouseEvent e)
在組件上單擊鼠標(biāo)按鈕時調(diào)用
mousePressed
void mousePressed(MouseEvent e)
在組件上按下鼠標(biāo)時調(diào)用
mouseReleased
void mouseReleased(MouseEvent e)
在組件上釋放鼠標(biāo)時調(diào)用
mouseEntered
void mouseEntered(MouseEvent e)
當(dāng)鼠標(biāo)進(jìn)入組件時調(diào)用
mouseExited
void mouseExited(MouseEvent e)
當(dāng)鼠標(biāo)退出組件時調(diào)用
圖形化界面的工具
//1,獲取路徑。通過文本框?qū)ο笸瓿伞?/p>
String str_dir = jTextField1.getText();
//2,將字符串路徑封裝成File對象。
File dir = new File(str_dir);
//判斷。
if(dir.exists()&&dir.isDirectory()){
//清空文本區(qū)域。
jTextArea1.setText("");
//3,獲取文件名稱列表。
String[] names = dir.list();
for(String name :names){
//4,將名字顯示到文本區(qū)域。
jTextArea1.append(name+LINE_SEPARATOR);
}
}
public class JFileChooser extends JComponent implements Accessible
事件監(jiān)聽機(jī)制流程:
監(jiān)聽器 - 將監(jiān)聽器注冊到事件源
事件源 - 組件 (外部動作)
產(chǎn)生事件對象 - 將事件對象傳給事件處理方式
菜單繼承
MenuComponent
MenuBar,MenuItem,Menu
達(dá)叔小生:往后余生,唯獨有你
You and me, we are family !
90后帥氣小伙,良好的開發(fā)習(xí)慣;獨立思考的能力;主動并且善于溝通
簡書博客: 達(dá)叔小生
https://www.jianshu.com/u/c785ece603d1
結(jié)語
下面我將繼續(xù)對 其他知識 深入講解 ,有興趣可以繼續(xù)關(guān)注
小禮物走一走 or 點贊
總結(jié)
以上是生活随笔為你收集整理的java中的图形界面编辑界面_第58节:Java中的图形界面编程-GUI的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java读写锁降级_java的读写锁中锁
- 下一篇: java中script类_在Script