日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础--awt详解以及简单应用

發(fā)布時間:2023/12/29 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础--awt详解以及简单应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

GUI
圖形用戶界面
CLI
命令行用戶接口
Java為GUI提供的對象存在java.Awt和Javax.Swing兩個包中.
Java當(dāng)中如何完成圖形化界面的制作呢?
AWT:abstract Window ToolKit.需要調(diào)用本地系統(tǒng)實現(xiàn)功能.屬于重量級控件.依賴于平臺.跨平臺性不是特別好.
Javax.Swing:在AWT基礎(chǔ)上.建立一套圖形化系統(tǒng),提供更多組件,完全由java實現(xiàn),增強了可移植性,屬于輕量級控件.所以以后最好用Swing開發(fā).
還有一個SWT外觀包.

Lable用來封裝文字.CheckBox復(fù)選框.TextComponent:文本組件.
Container: 容器,是一個特殊的組件,可以通過add方法來添加其他組件進來.
Window:Frame框架.Dialog:對話框.FileDialog:文件對話框就是打負責(zé)文件的選取和保存的窗口.
容器中的組件的排放方式,就是布局.
Panel:面板
常見的布局管理器:
FlowLayout:流式布局管理器.先放中間.第二次放右邊.默認(rèn)居中.
從左到右.
Panel默認(rèn)的布局管理器
BorderLayout:邊界式布局
上下左右打麻將.如果不指定方向,那么會居中直接填滿整個窗口.添加新組件就覆蓋原組件.
GridLayout:網(wǎng)格式布局
每個組件都存放在格子當(dāng)中,計算器就是一個GridLayout.
GridBagLayout:網(wǎng)格包布局管理器.
CardLayout:卡片式布局:

創(chuàng)建圖形化界面:

1. 創(chuàng)建Frame窗體 2. 對窗體進行基本設(shè)置,比如大小位置和布局 3. 定義組件 4. 將組件通過窗體的add()添加到窗體中 5. 讓窗體顯示,通過setVisible(true);方法

事件監(jiān)聽機制:

1. 事件源:圖形界面組件. 2. 事件:Event.每一個事件源都有自己的特有的對應(yīng)事件和共性事件. 3. 監(jiān)聽器:可以觸發(fā)某一個事件的動作都已經(jīng)封裝到了監(jiān)聽器中,

以上三者在Java中都定義好了,直接獲取其對象就可以了.我們要做的事情就是對產(chǎn)生的動作進行處理.

添加監(jiān)聽器:f.add(WindowListener wl)
WindowListener的一個抽象子類 WindowAdapter,已經(jīng)實現(xiàn)了接口,覆蓋了其中所有方法,只要繼承WindowAdapter覆蓋自己需要的方法即可!
一般開發(fā)awt要導(dǎo)入兩個包: java.awt.*;java.awt.event.*;

要讓按鈕具備退出的功能,那么按鈕就是事件源,添加一個監(jiān)聽器.ActionListener是少數(shù)沒有Adapter類的其中一個.因為它里面只有一個方法,直接實現(xiàn)即可.ActionPerfored(ActionEvent ae);

鼠標(biāo)事件和鍵盤事件:
AddKeyListener
AddMouseListener
此時點擊按鈕誰會先執(zhí)行?
鼠標(biāo)動作先.

下面我們來動手做一些圖形化界面:
實例1

package guiDemos;import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent;public class AwtDemo1 {public static void main(String[] args) {Frame f = new Frame("my awt");f.setLayout(new FlowLayout());f.setVisible(true);f.setSize(300,200);f.setLocation(700, 400);Button b = new Button("我是一個按鈕");//定義一個按鈕,名稱為"我是一個按鈕"f.add(b);f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e){System.out.println("我關(guān)!");System.exit(0); //點擊右上角關(guān)閉按鈕,退出虛擬機}public void windowActivated(WindowEvent e1){System.out.println("activated"); //每次窗口被激活,打印"activated"}public void windowOpened(WindowEvent e2){System.out.println("我活啦!"); //每次打開窗口,會輸出"我活啦"}});System.out.println("hello world!");} } class myWindow extends WindowAdapter{public void windowClosing(WindowEvent e) {System.out.println("window closing");e.getWindow();System.out.println(e.toString());System.out.println(e.getWindow());System.out.println(e.getSource());System.exit(0);} }

實例2

package guiDemos;import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent;public class FrameDemo {public static void main(String[] args) {// TODO 自動生成的方法存根new Frame_Demo();}}class Frame_Demo {private Frame f;private Button but;Frame_Demo() {init();}public void init() {f = new Frame("myFrame");f.setBounds(1000, 500, 300, 400);f.setLayout(new FlowLayout());but = new Button("Run");myEvent();f.add(but);f.setVisible(true);but.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自動生成的方法存根System.out.println("button do");System.exit(0);}});}private void myEvent() {f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}public void windowOpened(WindowEvent e) {System.out.println("活了");}});} }


點擊按鈕,打印出

實例3

package guiDemos;import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.TextField; 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;public class MouseKeyEventDemo {public static void main(String[] args) {// TODO 自動生成的方法存根new mouseAndKey();}}class mouseAndKey {private Frame f;private Button but;private TextField tf;mouseAndKey() {init();}public void init() {f = new Frame("myFrame");f.setBounds(1000, 500, 300, 400);f.setLayout(new FlowLayout());but = new Button("Run");tf = new TextField(20);myEvent();f.add(tf);f.add(but);f.setVisible(true);tf.addKeyListener(new KeyAdapter() {public void keyPressed(KeyEvent e) {int code = e.getKeyCode(); //判斷輸入的鍵值是否為數(shù)字if (!(code >= KeyEvent.VK_0 && code <= KeyEvent.VK_9)) {System.out.println(code+"is illegal");e.consume();}}});/** but.addActionListener(new ActionListener() {* * @Override public void actionPerformed(ActionEvent e) { // TODO* 自動生成的方法存根 System.out.println("button do"); System.exit(0); } });*/but.addMouseListener(new MouseAdapter() {public void mouseEntered(MouseEvent e) {System.out.println("entered");}public void mouseClicked(MouseEvent e) {if (e.getClickCount() == 2)System.out.println("雙擊動作");}});but.addKeyListener(new KeyAdapter() {public void keyPressed(KeyEvent e) {if (KeyEvent.getKeyText(e.getKeyCode()).equals("Q") && e.isControlDown())System.exit(0);System.out.println(KeyEvent.getKeyText(e.getKeyCode()) + "..." + e.getKeyChar());System.out.println("CTRL+Q");}});}private void myEvent() {f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}public void windowOpened(WindowEvent e) {System.out.println("活了");}});} }

實例4

package guiDemos;import java.awt.FileDialog; import java.awt.Frame; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.TextArea; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException;public class MyMenuDemo {private Frame frame;private MenuBar bar;private Menu fileMenu, subMenu;private MenuItem closeItem, openItem, saveItem;private FileDialog openDlg, saveDlg;private TextArea ta;MyMenuDemo() {init();}public void init() {frame = new Frame("my Window");bar = new MenuBar();fileMenu = new Menu("文件");openItem = new MenuItem("打開");saveItem = new MenuItem("保存");closeItem = new MenuItem("退出");ta = new TextArea();openDlg = new FileDialog(frame, "打開文件", FileDialog.LOAD);saveDlg = new FileDialog(frame, "保存文件", FileDialog.SAVE);frame.add(ta);fileMenu.add(openItem);fileMenu.add(saveItem);fileMenu.add(closeItem);bar.add(fileMenu);frame.setMenuBar(bar);frame.setBounds(700, 300, 600, 500);frame.setVisible(true);closeItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自動生成的方法存根System.exit(0);}});openItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自動生成的方法存根openDlg.setVisible(true);String fileName = openDlg.getDirectory() + openDlg.getFile();if (openDlg.getFile() != null) {File f = new File(fileName);// File fileName = new File(openDlg.getFile());// ta.append(f.toString());ta.setText("");BufferedReader br = null;try {br = new BufferedReader(new FileReader(f));String line = null;while ((line = br.readLine()) != null) {ta.append(line + "\r\n");}} catch (IOException e1) {// TODO 自動生成的 catch 塊e1.printStackTrace();} finally {try {if (br != null)br.close();} catch (IOException e1) {// TODO 自動生成的 catch 塊e1.printStackTrace();}}}}});saveItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自動生成的方法存根saveDlg.setVisible(true);BufferedWriter bw = null;String fileName = saveDlg.getDirectory()+saveDlg.getFile();if(saveDlg.getFile()!=null){try {bw = new BufferedWriter(new FileWriter(fileName));String text = ta.getText();bw.write(text);} catch (IOException e1) {// TODO 自動生成的 catch 塊e1.printStackTrace();}finally{try {if(bw!=null)bw.close();} catch (Exception e2) {// TODO: handle exception}}}}});frame.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}public static void main(String[] args) {// TODO 自動生成的方法存根new MyMenuDemo();}}

選擇文件后,文本區(qū)中顯示文本內(nèi)內(nèi)容,相當(dāng)于一個windows小工具記事本

實例5
寫一個程序,用于遍歷并文件夾中的所有內(nèi)容

package guiDemos;import java.awt.Button; import java.awt.Dialog; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Label; import java.awt.TextArea; 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.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File;public class MyWindowDemo {private Frame frame;private TextField tf;private Button but;private TextArea ta;private Dialog dlg;private Label lbl;private Button butOK;MyWindowDemo() {init();}public void init() {frame = new Frame("my Window");frame.setBounds(900, 400, 400, 500);frame.setLayout(new FlowLayout());tf = new TextField(30);but = new Button("轉(zhuǎn)到");ta = new TextArea(20, 40);frame.add(tf);frame.add(but);frame.add(ta);ta.setEditable(false);frame.setVisible(true);myEvent();tf.addKeyListener(new KeyAdapter() {public void keyPressed(KeyEvent e){if(KeyEvent.getKeyText(e.getKeyCode())=="Enter")doFile();}});but.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {doFile();}});}private void doFile(){ta.setText("");File f = new File(tf.getText());if (!f.exists()) { // ta.setText("請重新輸入地址");dlg = new Dialog(frame, "輸入錯誤",false);lbl = new Label("\""+f.toString()+"\""+"不是一個有效路徑");butOK = new Button("確定");dlg.setLayout(new FlowLayout());dlg.setBounds(900, 500, 300, 160);dlg.add(lbl);dlg.add(butOK);dlg.setVisible(true);dlg.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e){dlg.setVisible(false);}});butOK.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO 自動生成的方法存根dlg.setVisible(false);}});} elsefileList(f);}private void fileList(File f) {// TODO 自動生成的方法存根File[] files = f.listFiles();for (File file : files) {ta.append(file.toString());ta.append("\r\n");}/** for (File file : files) { if (!file.isHidden()) { if* (file.isDirectory()) { ta.append(file.toString()); ta.append("\r\n");* fileList(file); } else { ta.append(file.toString());* ta.append("\r\n"); // System.out.println(f); } } }*/}private void myEvent() {frame.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}public static void main(String[] args) {// TODO 自動生成的方法存根new MyWindowDemo();} }

以上就是Java awt界面的api基本使用.

總結(jié)

以上是生活随笔為你收集整理的Java基础--awt详解以及简单应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。