您好,登录后才能下订单哦!
Java作为一种广泛使用的编程语言,其图形用户界面(GUI)开发能力一直是其重要特性之一。Java提供了多种GUI开发工具包,如AWT、Swing和JavaFX,这些工具包使得开发者能够创建丰富的桌面应用程序。本文将通过一个简单的实例,分析如何使用Java Swing进行GUI开发,并探讨其可视化效果。
我们将创建一个简单的计算器应用程序,该应用程序具有基本的加减乘除功能。用户可以通过点击按钮输入数字和操作符,并在文本框中显示结果。这个实例将展示如何使用Swing组件构建用户界面,并处理用户交互。
首先,我们需要创建一个主窗口(JFrame),并设置其大小和关闭操作。
import javax.swing.*;
public class Calculator {
public static void main(String[] args) {
JFrame frame = new JFrame("Calculator");
frame.setSize(300, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
接下来,我们将在主窗口中添加文本框(JTextField)用于显示输入和结果,以及按钮(JButton)用于输入数字和操作符。
import javax.swing.*;
import java.awt.*;
public class Calculator {
public static void main(String[] args) {
JFrame frame = new JFrame("Calculator");
frame.setSize(300, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(280, 40));
frame.add(textField, BorderLayout.NORTH);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(4, 4, 10, 10));
String[] buttons = {
"7", "8", "9", "/",
"4", "5", "6", "*",
"1", "2", "3", "-",
"0", ".", "=", "+"
};
for (String button : buttons) {
JButton btn = new JButton(button);
buttonPanel.add(btn);
}
frame.add(buttonPanel, BorderLayout.CENTER);
frame.setVisible(true);
}
}
为了处理按钮点击事件,我们需要为每个按钮添加ActionListener。当按钮被点击时,相应的数字或操作符将被添加到文本框中。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator {
public static void main(String[] args) {
JFrame frame = new JFrame("Calculator");
frame.setSize(300, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(280, 40));
frame.add(textField, BorderLayout.NORTH);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(4, 4, 10, 10));
String[] buttons = {
"7", "8", "9", "/",
"4", "5", "6", "*",
"1", "2", "3", "-",
"0", ".", "=", "+"
};
for (String button : buttons) {
JButton btn = new JButton(button);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
textField.setText(textField.getText() + command);
}
});
buttonPanel.add(btn);
}
frame.add(buttonPanel, BorderLayout.CENTER);
frame.setVisible(true);
}
}
最后,我们需要实现计算逻辑。当用户点击“=”按钮时,程序将解析文本框中的表达式并计算结果。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator {
public static void main(String[] args) {
JFrame frame = new JFrame("Calculator");
frame.setSize(300, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(280, 40));
frame.add(textField, BorderLayout.NORTH);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(4, 4, 10, 10));
String[] buttons = {
"7", "8", "9", "/",
"4", "5", "6", "*",
"1", "2", "3", "-",
"0", ".", "=", "+"
};
for (String button : buttons) {
JButton btn = new JButton(button);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.equals("=")) {
String expression = textField.getText();
try {
double result = evaluateExpression(expression);
textField.setText(String.valueOf(result));
} catch (Exception ex) {
textField.setText("Error");
}
} else {
textField.setText(textField.getText() + command);
}
}
});
buttonPanel.add(btn);
}
frame.add(buttonPanel, BorderLayout.CENTER);
frame.setVisible(true);
}
private static double evaluateExpression(String expression) {
return new Object() {
int pos = -1, ch;
void nextChar() {
ch = (++pos < expression.length()) ? expression.charAt(pos) : -1;
}
boolean eat(int charToEat) {
while (ch == ' ') nextChar();
if (ch == charToEat) {
nextChar();
return true;
}
return false;
}
double parse() {
nextChar();
double x = parseExpression();
if (pos < expression.length()) throw new RuntimeException("Unexpected: " + (char)ch);
return x;
}
double parseExpression() {
double x = parseTerm();
for (;;) {
if (eat('+')) x += parseTerm(); // addition
else if (eat('-')) x -= parseTerm(); // subtraction
else return x;
}
}
double parseTerm() {
double x = parseFactor();
for (;;) {
if (eat('*')) x *= parseFactor(); // multiplication
else if (eat('/')) x /= parseFactor(); // division
else return x;
}
}
double parseFactor() {
if (eat('+')) return parseFactor(); // unary plus
if (eat('-')) return -parseFactor(); // unary minus
double x;
int startPos = this.pos;
if (eat('(')) { // parentheses
x = parseExpression();
eat(')');
} else if ((ch >= '0' && ch <= '9') || ch == '.') { // numbers
while ((ch >= '0' && ch <= '9') || ch == '.') nextChar();
x = Double.parseDouble(expression.substring(startPos, this.pos));
} else {
throw new RuntimeException("Unexpected: " + (char)ch);
}
return x;
}
}.parse();
}
}
通过这个简单的计算器实例,我们展示了如何使用Java Swing进行GUI开发。从创建主窗口到添加组件,再到处理用户交互和实现计算逻辑,每一步都展示了Java GUI开发的强大功能和灵活性。希望这个实例能够帮助读者更好地理解Java GUI开发的基本概念和技术。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。