-4

我在尝试让该程序运行时遇到问题,小程序加载,但是当我输入一个数字并单击确定时,似乎什么都没有发生...我不确定我的数组是否有问题或我的问题可能在哪里说谎。

我似乎无法弄清楚我到底做错了什么。

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.JOptionPane;



    public class LargestApplet extends Applet implements ActionListener {

        private static final long serialVersionUID = 1L;
        int number =0;
        double highNumber=-1;
        double lowNumber=-1;



        // Create components for applet
        Label numberLabel = new Label("Enter a number:");
        TextField numberField = new TextField(5);
        Button okButton = new Button("OK");
        Button cancelButton = new Button("Cancel");

        Label highNumberOutputLabel = new Label("The Highest number is: 0         ");

        public void init() {
            add(numberLabel);
            add(numberField);
            numberField.requestFocus();
            add(okButton);
            add(cancelButton);
            add(highNumberOutputLabel);
            setSize(400, 500);  // Sets the size of the applet window
        }
        public void actionPerformed(ActionEvent e) {
            int number = 0, highNumber = -1;

            if (numberField.getText().length() == 0) {
                numberField.requestFocus();
                JOptionPane.showMessageDialog(null,
                        "Number Cannot blank", "D A T A   E R R O R",
                        JOptionPane.ERROR_MESSAGE);
                return;
            }
            try {
                number = Integer.parseInt(numberField.getText());
            } catch (NumberFormatException ex) {
                numberField.requestFocus();
                JOptionPane.showMessageDialog(null, "Number is invalid",
                        "D A T A   E R R O R", JOptionPane.ERROR_MESSAGE);
                return;
            }
            if (number < 0 || number > 10) {
                numberField.requestFocus();
                JOptionPane.showMessageDialog(null,
                        "Number must be between 0 and 10",
                        "D A T A   E R R O R", JOptionPane.ERROR_MESSAGE);
                return;
            }
            // Determine highest number
            Integer [] numberAr = {number};
            for(int i = 0; i < numberAr.length; i++)
            {
                number += numberAr[i];
                if (numberAr[i] < lowNumber)
                    lowNumber = numberAr[i];
                else if (numberAr[i] > highNumber)
                    highNumber = numberAr[i];
            }

            // Display the results
            highNumberOutputLabel.setText("The Highest Number is:   "
                    + (highNumber));




}
        }
4

1 回答 1

1

您没有将 ActionListener 添加到按钮中,因此按下按钮将无效。通过调用addActionListener(this)相关的按钮来解决这个问题。只是让您的 GUI 类扩展 ActionListener(这通常也不是一个好主意)不会神奇地为按钮提供动作侦听器代码,如果您不首先给它代码以使其具有行为,则按下按钮将无效。

更重要的是,您应该使用 Swing(JApplet、JButton)而不是 AWT 进行编码。虽然 Swing 已经过时了,但相比之下 AWT 是史前的。

对我们来说最重要的是,如果你的代码没有抛出任何问题,你不应该在你的问题中发布 NullPointerExceptions。

于 2013-09-08T18:09:01.333 回答