AWT中常用組件
基本組件
| 組件名 | 功能 |
|---|---|
| Button | Button |
| Canvas | 用于繪圖的畫布 |
| Checkbox | 復選框組件(也可當做單選框組件使用) |
| CheckboxGroup | 用于將多個Checkbox 組件組合成一組, 一組 Checkbox 組件將只有一個可以 被選中 , 即全部變成單選框組件 |
| Choice | 下拉選擇框 |
| Frame | 視窗 , 在 GUI 程式里通過該類創建視窗 |
| Label | 標簽類,用于放置提示性文本 |
| List | JU表框組件,可以添加多項條目 |
| Panel | 不能單獨存在基本容器類,必須放到其他容器中 |
| Scrollbar | 滑動條組件,如果需要用戶輸入位于某個范圍的值 , 就可以使用滑動條組件 ,比如調 色板中設定 RGB 的三個值所用的滑動條,當創建一個滑動條時,必須指定它的方向、初始值、 滑塊的大小、最小值和最大值, |
| ScrollPane | 帶水平及垂直滾動條的容器組件 |
| TextArea | 多行文本域 |
| TextField | 單行文本框 |
這些 AWT 組件的用法比較簡單,可以查閱 API 檔案來獲取它們各自的構方法、成員方法等詳細資訊,
API 檔案地址:https://www.apiref.com/java11-zh/java.desktop/javax/swing/package-summary.html
案例:
? 實作下圖效果:
?
演示代碼:
import javax.swing.*;
import java.awt.*;
public class BasicComponentDemo {
Frame frame = new Frame("這里測驗基本組件");
//定義一個按鈕
Button ok = new Button("確認");
//定義一個復選框組
CheckboxGroup cbg = new CheckboxGroup();
//定義一個單選框,初始處于被選中狀態,并添加到cbg組中
Checkbox male = new Checkbox("男", cbg, true);
//定義一個單選框,初始處于未被選中狀態,并添加到cbg組中
Checkbox female = new Checkbox("女", cbg, false);
//定義一個復選框,初始處于未被選中狀態
Checkbox married = new Checkbox("是否已婚?", false);
//定義一個下拉選擇框
Choice colorChooser = new Choice();
//定義一個串列選擇框
List colorList = new List(6, true);
//定義一個5行,20列的多行文本域
TextArea ta = new TextArea(5, 20);
//定義一個50列的單行文本域
TextField tf = new TextField(50);
public void init() {
//往下拉選擇框中添加內容
colorChooser.add("紅色");
colorChooser.add("綠色");
colorChooser.add("藍色");
//往串列選擇框中添加內容
colorList.add("紅色");
colorList.add("綠色");
colorList.add("藍色");
//創建一個裝載按鈕和文本框的Panel容器
Panel bottom = new Panel();
bottom.add(tf);
bottom.add(ok);
//把bottom添加到Frame的底部
frame.add(bottom,BorderLayout.SOUTH);
//創建一個Panel容器,裝載下拉選擇框,單選框和復選框
Panel checkPanel = new Panel();
checkPanel.add(colorChooser);
checkPanel.add(male);
checkPanel.add(female);
checkPanel.add(married);
//創建一個垂直排列的Box容器,裝載 多行文本域和checkPanel
Box topLeft = Box.createVerticalBox();
topLeft.add(ta);
topLeft.add(checkPanel);
//創建一個水平排列的Box容器,裝載topLeft和串列選擇框
Box top = Box.createHorizontalBox();
top.add(topLeft);
top.add(colorList);
//將top添加到frame的中間區域
frame.add(top);
//設定frame最佳大小并可見
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
new BasicComponentDemo().init();
}
}
對話框Dialog
Dialog
Dialog 是 Window 類的子類,是 一個容器類,屬于特殊組件 , 對話框是可以獨立存在的頂級視窗, 因此用法與普通視窗的用法幾乎完全一樣,但是使用對話框需要注意下面兩點:
- 對話框通常依賴于其他視窗,就是通常需要有一個父視窗;
- 對話框有非模式(non-modal)和模式(modal)兩種,當某個模式對話框被打開后,該模式對話框總是位于它的父視窗之上,在模式對話框被關閉之前,父視窗無法獲得焦點,
模式表單:你必須關閉該表單,才能操作其它表單;比如說,必須按確定或取消,或者按關閉,
非模式表單:不必關閉該表單,就可轉換到其它表單上進行操作,
| 方法名稱 | 方法功能 |
|---|---|
| Dialog(Frame owner, String title, boolean modal) | 創建一個對話框物件: owner:當前對話框的父視窗 title:當前對話框的標題 modal:當前對話框是否是模式對話框,true/false |
案例1:
? 通過Frame、Button、Dialog實作下圖效果:
演示代碼1:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
public class DialogDemo1 {
public static void main(String[] args) {
Frame frame = new Frame("這里測驗Dialog");
Dialog d1 = new Dialog(frame, "模式對話框", true);
Dialog d2 = new Dialog(frame, "非模式對話框", false);
Button b1 = new Button("打開模式對話框");
Button b2 = new Button("打開非模式對話框");
//設定對話框的大小和位置
d1.setBounds(20,30,300,400);
d2.setBounds(20,30,300,400);
//給b1和b2系結監聽事件
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
d1.setVisible(true);
}
});
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
d2.setVisible(true);
}
});
//把按鈕添加到frame中
frame.add(b1);
frame.add(b2,BorderLayout.SOUTH);
//設定frame最佳大小并可見
frame.pack();
frame.setVisible(true);
}
}
在Dialog對話框中,可以根據需求,自定義內容
案例:
? 點擊按鈕,彈出一個模式對話框,其內容如下:
演示代碼:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.JButton;
import java.awt.*;
public class DialogDemo2 {
public static void main(String[] args) {
Frame frame = new Frame("這里測驗Dialog");
Dialog d1 = new Dialog(frame, "模式對話框", true);
//往對話框中添加內容
Box vBox = Box.createVerticalBox();
vBox.add(new TextField(15));
vBox.add(new JButton("確認"));
d1.add(vBox);
Button b1 = new Button("打開模式對話框");
//設定對話框的大小和位置
d1.setBounds(20,30,200,100);
//給b1系結監聽事件
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
d1.setVisible(true);
}
});
//把按鈕添加到frame中
frame.add(b1);
//設定frame最佳大小并可見
frame.pack();
frame.setVisible(true);
}
}
FileDialog
Dialog 類還有 一個子類 : FileDialog ,它代表一個檔案對話框,用于打開或者保存 檔案,需要注意的是FileDialog無法指定模態或者非模態,這是因為 FileDialog 依賴于運行平臺的實作,如果運行平臺的檔案對話框是模態的,那么 FileDialog 也是模態的;否則就是非模態的 ,
| 方法名稱 | 方法功能 |
|---|---|
| FileDialog(Frame parent, String title, int mode) | 創建一個檔案對話框: parent:指定父視窗 title:對話框標題 mode:檔案對話框型別,如果指定為FileDialog.load,用于打開檔案,如果指定為FileDialog.SAVE,用于保存檔案 |
| String getDirectory() | 獲取被打開或保存檔案的絕對路徑 |
| String getFile() | 獲取被打開或保存檔案的檔案名 |
案例2:
? 使用 Frame、Button和FileDialog完成下圖效果:
演示代碼2:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FileDialogTest {
public static void main(String[] args) {
Frame frame = new Frame("這里測驗FileDialog");
FileDialog d1 = new FileDialog(frame, "選擇需要加載的檔案", FileDialog.LOAD);
FileDialog d2 = new FileDialog(frame, "選擇需要保存的檔案", FileDialog.SAVE);
Button b1 = new Button("打開檔案");
Button b2 = new Button("保存檔案");
//給按鈕添加事件
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
d1.setVisible(true);
//列印用戶選擇的檔案路徑和名稱
System.out.println("用戶選擇的檔案路徑:"+d1.getDirectory());
System.out.println("用戶選擇的檔案名稱:"+d1.getFile());
}
});
System.out.println("-------------------------------");
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
d2.setVisible(true);
//列印用戶選擇的檔案路徑和名稱
System.out.println("用戶選擇的檔案路徑:"+d2.getDirectory());
System.out.println("用戶選擇的檔案名稱:"+d2.getFile());
}
});
//添加按鈕到frame中
frame.add(b1);
frame.add(b2,BorderLayout.SOUTH);
//設定frame最佳大小并可見
frame.pack();
frame.setVisible(true);
}
}
個人博客本文地址:https://kohler19.gitee.io/2022/04/05/java-GUI2/
個人博客:https://kohler19.gitee.io/
公眾號:“愚生淺末”

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/456099.html
標籤:Java
上一篇:多執行緒(多執行緒實作方式二【Runnable介面實作】)
下一篇:流概述
