使用javax.swing开发跨平台应用程序
发布时间:2023-12-23 02:42:49
javax.swing是Java语言中用于开发图形用户界面(GUI)的标准库之一。它提供了一系列的类和方法,用于创建和管理窗口、按钮、文本框、列表、菜单等GUI组件。使用javax.swing可以开发跨平台的应用程序,因为它是基于Java虚拟机运行的,可以在不同操作系统上运行。
下面是一个使用javax.swing开发的简单计算器的例子:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator extends JFrame implements ActionListener {
// GUI组件
private JTextField textField;
private JButton[] numberButtons;
private JButton[] functionButtons;
private JButton addButton, subButton, mulButton, divButton;
private JButton decButton, equButton, delButton, clrButton;
private JPanel panel;
// 计算器变量
private double num1 = 0, num2 = 0, result = 0;
private char operator;
public Calculator() {
// 设置窗口属性
this.setSize(300, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Calculator");
// 创建GUI组件
textField = new JTextField();
numberButtons = new JButton[10];
functionButtons = new JButton[8];
addButton = new JButton("+");
subButton = new JButton("-");
mulButton = new JButton("*");
divButton = new JButton("/");
decButton = new JButton(".");
equButton = new JButton("=");
delButton = new JButton("Delete");
clrButton = new JButton("Clear");
// 设置布局
panel = new JPanel();
panel.setLayout(new GridLayout(4, 4));
// 添加组件到面板
panel.add(numberButtons[1]);
panel.add(numberButtons[2]);
panel.add(numberButtons[3]);
panel.add(addButton);
panel.add(numberButtons[4]);
panel.add(numberButtons[5]);
panel.add(numberButtons[6]);
panel.add(subButton);
panel.add(numberButtons[7]);
panel.add(numberButtons[8]);
panel.add(numberButtons[9]);
panel.add(mulButton);
panel.add(decButton);
panel.add(numberButtons[0]);
panel.add(equButton);
panel.add(divButton);
// 设置监听器
addButton.addActionListener(this);
subButton.addActionListener(this);
mulButton.addActionListener(this);
divButton.addActionListener(this);
decButton.addActionListener(this);
equButton.addActionListener(this);
delButton.addActionListener(this);
clrButton.addActionListener(this);
// 添加组件到窗口
this.add(textField, BorderLayout.NORTH);
this.add(panel, BorderLayout.CENTER);
this.add(delButton, BorderLayout.WEST);
this.add(clrButton, BorderLayout.EAST);
// 显示窗口
this.setVisible(true);
}
public static void main(String[] args) {
// 在事件调度线程中创建和显示GUI
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Calculator();
}
});
}
@Override
public void actionPerformed(ActionEvent e) {
// 处理按钮事件
Object source = e.getSource();
for (int i = 0; i < 10; i++) {
if (source == numberButtons[i]) {
textField.setText(textField.getText() + i);
}
}
if (source == decButton) {
textField.setText(textField.getText() + ".");
}
if (source == addButton) {
num1 = Double.parseDouble(textField.getText());
operator = '+';
textField.setText("");
}
if (source == subButton) {
num1 = Double.parseDouble(textField.getText());
operator = '-';
textField.setText("");
}
if (source == mulButton) {
num1 = Double.parseDouble(textField.getText());
operator = '*';
textField.setText("");
}
if (source == divButton) {
num1 = Double.parseDouble(textField.getText());
operator = '/';
textField.setText("");
}
if (source == equButton) {
num2 = Double.parseDouble(textField.getText());
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
}
textField.setText(String.valueOf(result));
}
if (source == clrButton) {
textField.setText("");
}
if (source == delButton) {
String str = textField.getText();
textField.setText("");
for (int i = 0; i < str.length() - 1; i++) {
textField.setText(textField.getText() + str.charAt(i));
}
}
}
}
这个例子创建了一个简单的计算器应用程序。用户可以在文本框中输入数字和运算符,然后通过按下等号按钮执行计算。计算结果会显示在文本框中。
这个例子演示了如何使用javax.swing创建窗口、文本框和按钮,并且如何给按钮添加点击事件的监听器。在点击事件的处理方法中,我们可以通过判断事件源来执行不同的逻辑,比如处理数字按钮、运算符按钮等。这个例子还演示了如何处理简单的算术运算。
通过javax.swing和Java语言的特性,我们可以方便地开发出漂亮、易用的跨平台的应用程序。无论是在Windows、Mac还是Linux系统上运行,用户都可以得到一致的使用体验。
