实例不存储在数组中。这里有什么问题?

时间:2013-09-08 18:04:01

标签: java arrays swing

我在尝试让这个程序运行时遇到问题,applet加载,但是当我输入一个数字并单击确定时,似乎没有任何事情发生......我不确定我是否有阵列问题或者我的问题可能是谎言。

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

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));




}
        }

1 个答案:

答案 0 :(得分:1)

您没有将ActionListener添加到按钮,因此按下按钮将不起作用。通过在相关Button上调用addActionListener(this)来解决此问题。只是让你的GUI类扩展ActionListener(一般来说这也不是一个好主意)并没有神奇地给按钮提供动作监听器代码,如果你不首先给它代码来产生一个行为,按下按钮将没有任何效果。

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

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