编写最简单的GUI程序:只有一个Frame,当点击关闭按钮时,结束应用程序。使用8中不同的事件处理方式。 2、设计简单计算器,具有加、减、乘、除功能。
时间: 2024-04-04 09:30:59 浏览: 40
1. 编写最简单的GUI程序
下面是使用8种不同事件处理方式实现的最简单GUI程序代码:
```java
import java.awt.*;
import java.awt.event.*;
public class SimpleGUI {
public static void main(String[] args) {
// 创建窗口
Frame frame = new Frame("Simple GUI");
frame.setSize(400, 300);
// 1. 使用 WindowAdapter 实现
// frame.addWindowListener(new WindowAdapter() {
// @Override
// public void windowClosing(WindowEvent e) {
// System.exit(0);
// }
// });
// 2. 使用匿名内部类实现
// frame.addWindowListener(new WindowListener() {
// @Override
// public void windowOpened(WindowEvent e) {}
// @Override
// public void windowClosing(WindowEvent e) {
// System.exit(0);
// }
// @Override
// public void windowClosed(WindowEvent e) {}
// @Override
// public void windowIconified(WindowEvent e) {}
// @Override
// public void windowDeiconified(WindowEvent e) {}
// @Override
// public void windowActivated(WindowEvent e) {}
// @Override
// public void windowDeactivated(WindowEvent e) {}
// });
// 3. 使用 Lambda 表达式实现
// frame.addWindowListener(e -> System.exit(0));
// 4. 使用 MouseAdapter 实现
// frame.addMouseListener(new MouseAdapter() {
// @Override
// public void mouseClicked(MouseEvent e) {
// System.exit(0);
// }
// });
// 5. 使用匿名内部类实现
// frame.addMouseListener(new MouseListener() {
// @Override
// public void mouseClicked(MouseEvent e) {
// System.exit(0);
// }
// @Override
// public void mousePressed(MouseEvent e) {}
// @Override
// public void mouseReleased(MouseEvent e) {}
// @Override
// public void mouseEntered(MouseEvent e) {}
// @Override
// public void mouseExited(MouseEvent e) {}
// });
// 6. 使用 Lambda 表达式实现
// frame.addMouseListener(e -> System.exit(0));
// 7. 使用 ActionListener 实现
// Button closeBtn = new Button("Close");
// closeBtn.addActionListener(new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
// System.exit(0);
// }
// });
// frame.add(closeBtn, BorderLayout.CENTER);
// 8. 使用 Lambda 表达式实现
Button closeBtn = new Button("Close");
closeBtn.addActionListener(e -> System.exit(0));
frame.add(closeBtn, BorderLayout.CENTER);
frame.setVisible(true);
}
}
```
2. 设计简单计算器
下面是一个简单的计算器程序代码,具有加、减、乘、除功能:
```java
import java.awt.*;
import java.awt.event.*;
public class Calculator {
public static void main(String[] args) {
// 创建窗口
Frame frame = new Frame("Calculator");
frame.setSize(400, 300);
frame.setLayout(new BorderLayout());
// 显示结果的文本框
TextField resultField = new TextField("0");
resultField.setEditable(false);
frame.add(resultField, BorderLayout.NORTH);
// 数字按钮
Panel numPanel = new Panel(new GridLayout(4, 3, 5, 5));
String[] nums = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ".", "C"};
for (String num : nums) {
Button btn = new Button(num);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String result = resultField.getText();
if (num.equals(".")) {
if (!result.contains(".")) {
resultField.setText(result + ".");
}
} else if (num.equals("C")) {
resultField.setText("0");
} else {
if (result.equals("0")) {
resultField.setText(num);
} else {
resultField.setText(result + num);
}
}
}
});
numPanel.add(btn);
}
frame.add(numPanel, BorderLayout.CENTER);
// 操作符按钮
Panel operPanel = new Panel(new GridLayout(4, 1, 5, 5));
String[] opers = {"+", "-", "*", "/"};
for (String oper : opers) {
Button btn = new Button(oper);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String result = resultField.getText();
Double num1 = Double.parseDouble(result);
resultField.setText("0");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String result = resultField.getText();
Double num2 = Double.parseDouble(result);
Double resultNum = null;
if (oper.equals("+")) {
resultNum = num1 + num2;
} else if (oper.equals("-")) {
resultNum = num1 - num2;
} else if (oper.equals("*")) {
resultNum = num1 * num2;
} else if (oper.equals("/")) {
resultNum = num1 / num2;
}
resultField.setText(resultNum.toString());
}
});
}
});
operPanel.add(btn);
}
frame.add(operPanel, BorderLayout.EAST);
// 关闭按钮
Button closeBtn = new Button("Close");
closeBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
frame.add(closeBtn, BorderLayout.SOUTH);
frame.setVisible(true);
}
}
```