java - 我在事件处理方面做的每一件事都是正确的。但是,我遗漏了一些东西。请问这是什么?
问题描述
我正在尝试编写一个计算圆的面积和周长的程序。该程序应该有两个按钮。一种用于计算过程。另一个是关闭程序。我在实现 ActionListener 时遗漏了一些东西。你能帮帮我吗?
import java.awt.* ;
import java.awt.event.* ;
import javax.swing.* ;
public class Circle extends JFrame {
private JLabel radiusLabel, areaLabel, perimeterLabel ;
private JTextField radiusText, areaText, perimeterText;
private JButton calculateButton, exitButton;
private CalculateButtonHandler calculateButtonHandler;
private ExitButtonHandler exitButtonHandler;
public Circle(){
setLayout(new FlowLayout());
radiusLabel = new JLabel("radius");
areaLabel = new JLabel("Area");
perimeterLabel = new JLabel("Perimeter");
radiusText = new JTextField(10);
areaText = new JTextField(10);
perimeterText = new JTextField(10);
calculateButton = new JButton("Calculate") ;
calculateButtonHandler = new CalculateButtonHandler();
calculateButtonHandler.addActionListener(calculateButtonHandler);
exitButton = new JButton("Close") ;
exitButton.addActionListener(exitButtonHandler);
setTitle("Area and Perimeter of a circle");
Container pane = getContentPane();
pane.setLayout(new GridLayout(4, 2));
pane.add(radiusLabel);
pane.add(radiusText);
pane.add(areaLabel);
pane.add(areaText);
pane.add(perimeterLabel);
pane.add(perimeterText);
pane.add(calculateButton);
pane.add(exitButton);
setSize(WIDTH, HEIGHT);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
class CalculateButtonHandler implements ActionListener{
public CalculateButtonHandler(ActionEvent e) {
double radius, area, perimeter ;
radius = Double.parseDouble(radiusText.getText());
area = radius * radius * 3.14 ;
perimeter = 2 * radius * 3.14 ;
areaText.setText("" + area);
perimeterText.setText("" + perimeter);
}
}
private class ExitButtonHandler implements ActionListener {
public ExitButtonHandler() {
System.exit(0);
}
}
public static void main(String[] args) {
Circle c = Circle();
}
}
解决方案
我在实现 ActionListener 时遗漏了一些东西。
class CalculateButtonHandler implements ActionListener{
public CalculateButtonHandler(ActionEvent e) {
double radius, area, perimeter ;
radius = Double.parseDouble(radiusText.getText());
area = radius * radius * 3.14 ;
perimeter = 2 * radius * 3.14 ;
areaText.setText("" + area);
perimeterText.setText("" + perimeter);
}
}
在您的代码中,您说您正在实现“ActionListener”,但您没有。您没有实现该actionPerformed(...)
方法。
public CalculateButtonHandler(ActionEvent e) {
应该:
public void actionPerformed(ActionEvent e) {
推荐阅读
- node.js - 如何使用 node.js 解码和验证 AWS SigV4 请求的签名
- reactjs - 为什么我收到 400 bad request 错误?使用 Django Rest 框架作为后端并使用 React 作为我的 Web 应用程序的前端
- javascript - 如何计算相对百分比?
- azure-devops - 如何在 Azure DevOps 中设置 CI 以使其使用不同的环境应用程序设置?
- list - 无法输入整数类型错误 1700 AppleScript
- scala - 未调用符号函数
- c - SDL_RenderSetLogicalSize() 在拖动和调整窗口大小时不居中
- html - 返回内容锚点顶部
- java - 为什么颜色类不能在 JButton 上工作?
- xml - XSLT 1.0 - 使用 Vanilla XSLT 1.0 或 PHP XSLT 的节点中值唯一性的输出计数