AWT中常用組件 基本組件 組件名 功能 Button Button Canvas 用於繪圖的畫布 Checkbox 覆選框組件(也可當做單選框組件使用) CheckboxGroup 用於將多個Checkbox 組件組合成一組, 一組 Checkbox 組件將只有一個可以 被選中 , 即全部變成單選 ...
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/
公眾號:“愚生淺末”