以前介紹過GUI,今天設計一個主要使用其功能及運用JFrame的表單設計
###目錄
1. 導入類
2. 創建問卷主視窗 (JFrame)
** 3. 添加問卷問題和元件**
4. 運行程式
5. 程式碼完整範例
1. 導入類
import javax.swing.;
import java.awt.;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
2. 創建問卷主視窗 (JFrame)
public class Questionnaire extends JFrame {
public Questionnaire() {
setTitle("問卷調查");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(new GridLayout(5, 2)); // 設置為5行2列的網格佈局
}
}
3. 添加問卷問題和元件
這裡包括了文本框、單選按鈕(用於選擇問題的選項),以及一個提交按鈕。
public class Questionnaire extends JFrame {
public Questionnaire() {
setTitle("問卷調查");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(new GridLayout(5, 2));
// 問題1:請輸入您的姓名
JLabel nameLabel = new JLabel("請輸入您的姓名:");
JTextField nameField = new JTextField();
// 問題2:您的年齡範圍
JLabel ageLabel = new JLabel("您的年齡範圍:");
String[] ageOptions = {"18-25", "26-35", "36-45", "46以上"};
JComboBox<String> ageComboBox = new JComboBox<>(ageOptions);
// 問題3:您的性別
JLabel genderLabel = new JLabel("您的性別:");
JRadioButton maleButton = new JRadioButton("男性");
JRadioButton femaleButton = new JRadioButton("女性");
ButtonGroup genderGroup = new ButtonGroup();
genderGroup.add(maleButton);
genderGroup.add(femaleButton);
// 提交按鈕
JButton submitButton = new JButton("提交");
// 將元件添加到JFrame
add(nameLabel);
add(nameField);
add(ageLabel);
add(ageComboBox);
add(genderLabel);
add(maleButton);
add(new JLabel()); // 用於佈局填充
add(femaleButton);
add(new JLabel()); // 用於佈局填充
add(submitButton);
// 添加按鈕的事件處理
submitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = nameField.getText();
String age = (String) ageComboBox.getSelectedItem();
String gender = maleButton.isSelected() ? "男性" : "女性";
JOptionPane.showMessageDialog(null,
"姓名: " + name +
"\n年齡範圍: " + age +
"\n性別: " + gender);
}
});
}
public static void main(String[] args) {
Questionnaire questionnaire = new Questionnaire();
questionnaire.setVisible(true);
}
}
4. 運行程式
在 main 方法中創建 Questionnaire 的實例並設置為可見。這段程式碼會產生一個問卷表單,讓使用者可以輸入姓名、選擇年齡範圍和性別,然後提交問卷。
5. 程式碼完整範例
import javax.swing.;
import java.awt.;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Questionnaire extends JFrame {
public Questionnaire() {
setTitle("問卷調查");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(new GridLayout(5, 2));
JLabel nameLabel = new JLabel("請輸入您的姓名:");
JTextField nameField = new JTextField();
JLabel ageLabel = new JLabel("您的年齡範圍:");
String[] ageOptions = {"18-25", "26-35", "36-45", "46以上"};
JComboBox<String> ageComboBox = new JComboBox<>(ageOptions);
JLabel genderLabel = new JLabel("您的性別:");
JRadioButton maleButton = new JRadioButton("男性");
JRadioButton femaleButton = new JRadioButton("女性");
ButtonGroup genderGroup = new ButtonGroup();
genderGroup.add(maleButton);
genderGroup.add(femaleButton);
JButton submitButton = new JButton("提交");
add(nameLabel);
add(nameField);
add(ageLabel);
add(ageComboBox);
add(genderLabel);
add(maleButton);
add(new JLabel()); // 用於佈局填充
add(femaleButton);
add(new JLabel()); // 用於佈局填充
add(submitButton);
submitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = nameField.getText();
String age = (String) ageComboBox.getSelectedItem();
String gender = maleButton.isSelected() ? "男性" : "女性";
JOptionPane.showMessageDialog(null,
"姓名: " + name +
"\n年齡範圍: " + age +
"\n性別: " + gender);
}
});
}
public static void main(String[] args) {
Questionnaire questionnaire = new Questionnaire();
questionnaire.setVisible(true);
}
}
—-
###JFrame介紹JFrame
是Java Swing庫中用於創建圖形用戶界面(GUI)的頂層容器之一。它代表應用程式的主視窗,並且通常包含其他Swing元件,如按鈕、文本框、標籤等。JFrame
是一個非常重要的類,因為它提供了顯示和管理應用程式的視窗界面的基本功能。
基本結構:
JFrame
是繼承自 java.awt.Frame
的類,它提供了一個帶有標題欄、邊框和按鈕(如最小化、最大化和關閉按鈕)的窗口。JFrame
是一個容器,這意味著它可以包含其他Swing元件,如 JPanel
、JButton
、JLabel
等。創建JFrame:
new JFrame()
來創建一個新的框架對象,也可以通過 JFrame(String title)
創建一個帶標題的框架。JFrame frame = new JFrame("My Application");
設置JFrame的大小和位置:
setSize(int width, int height)
設置框架的寬度和高度。setLocation(int x, int y)
設置框架在螢幕上的位置。setLocationRelativeTo(null)
將框架設置在螢幕的中央。例子:
frame.setSize(400, 300); // 設置框架大小為400x300像素
frame.setLocationRelativeTo(null); // 居中顯示
關閉操作:
setDefaultCloseOperation(int operation)
用於指定用戶點擊「關閉」按鈕時的操作。常見選項包括:
JFrame.EXIT_ON_CLOSE
: 結束應用程式。JFrame.HIDE_ON_CLOSE
: 隱藏視窗但不結束應用程式。JFrame.DISPOSE_ON_CLOSE
: 釋放視窗資源,但不結束應用程式。例子:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
佈局管理:
JFrame
可以使用不同的佈局管理器來安排其內容,常見的佈局管理器有 BorderLayout
、FlowLayout
、GridLayout
等。GridLayout
將框架設置為3行2列的佈局:
frame.setLayout(new GridLayout(3, 2));
添加元件:
add(Component comp)
方法將元件添加到 JFrame
中。JButton button = new JButton("Click Me");
frame.add(button);
顯示JFrame:
setVisible(true)
方法來顯示框架,這是讓框架出現在螢幕上的最後一步。frame.setVisible(true);
import javax.swing.*;
public class MyFrameExample {
public static void main(String[] args) {
// 創建JFrame實例
JFrame frame = new JFrame("My Application");
// 設置框架大小和位置
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
// 設置關閉操作
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 設置佈局管理器
frame.setLayout(new GridLayout(2, 1));
// 添加元件
JLabel label = new JLabel("Hello, JFrame!", JLabel.CENTER);
JButton button = new JButton("Click Me");
frame.add(label);
frame.add(button);
// 顯示框架
frame.setVisible(true);
}
}
setTitle(String title)
: 設置框架的標題。setSize(int width, int height)
: 設置框架的大小。setLocation(int x, int y)
: 設置框架的位置。setLocationRelativeTo(Component c)
: 設置框架相對於另一個組件的位置,如果為 null
,則居中顯示。setDefaultCloseOperation(int operation)
: 設置關閉操作。setLayout(LayoutManager manager)
: 設置佈局管理器。add(Component comp)
: 向框架中添加元件。setVisible(boolean b)
: 顯示或隱藏框架。