繁体   English   中英

JOptionPane错误Java

[英]JOptionPane Error Java

我正在尝试制作GPA计算器应用程序。 我已经掌握了所有必要的代码。 只是当我尝试制作GUI时,我得到了我根本不理解的错误代码。

码:

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Caculator{

    public static void main(String args[]){

        Scanner ream = new Scanner(System.in);
        String firstnumber = "";
        double firstdec;
        String secondnumber = "";
        double seconddec;
        String thirdnumber = "";
        double thirddec;
        String fourthnumber = "";
        double fourthdec;
        String fifthnumber = "";
        double fifthdec;
        String sixthnumber = "";
        double sixthdec;
        String seventhnumber = "";
        double seventhdec;
        String eighthnumber = "";
        double eighthdec;
        double total = 0;
        JTextField GPA = new JTextField();

    JFrame panel = new JFrame();
    panel.add(new JLabel("First Grade"));
    panel.add(new JLabel("Second Grade"));
    panel.add(new JTextField(firstnumber));
    panel.add(new JTextField(secondnumber));
    panel.add(new JLabel("Third Grade"));
    panel.add(new JLabel("Fourth Grade"));
    panel.add(new JTextField(thirdnumber));
    panel.add(new JTextField(fourthnumber));
    panel.add(new JLabel("Fifth Grade"));
    panel.add(new JLabel("Sixth Grade"));
    panel.add(new JTextField(fifthnumber));
    panel.add(new JTextField(sixthnumber));
    panel.add(new JLabel("Seventh Grade"));
    panel.add(new JLabel("Eighth Grade"));
    panel.add(new JTextField(seventhnumber));
    panel.add(new JTextField(eighthnumber));

    int result = JOptionPane.showConfirmDialog(null, panel, "Quesion", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
    switch (result) {

        case JOptionPane.OK_OPTION:
            firstnumber = ream.nextLine();

            if (firstnumber.equals("A+")) {

            firstdec = 4.4;
                total += firstdec;

            } else

            if (firstnumber.equals("A")) {

                firstdec = 4.0;
                total += firstdec;

            } else

            if (firstnumber.equals("A-")) {

                firstdec = 3.7;
                total += firstdec;

            } else

            if (firstnumber.equals("B+")) {

                firstdec = 3.4;
                total += firstdec;

            } else

            if (firstnumber.equals("B")) {

                firstdec = 3.0;
                total += firstdec;

            } else

            if (firstnumber.equals("B-")) {

                firstdec = 2.7;
                total += firstdec;

            } else

            if (firstnumber.equals("C+")) {

                firstdec = 2.4;
                total += firstdec;

            } else

            if (firstnumber.equals("C")) {

                firstdec = 2.0;
                total += firstdec;

            } else

            if (firstnumber.equals("C-")) {

                firstdec = 1.7;
                total += firstdec;

            } else

            if (firstnumber.equals("F")) {

                firstdec = 0;
                total += firstdec;

            }

            secondnumber = ream.nextLine();

            if (secondnumber.equals("A+")) {

                seconddec = 4.4;
                total += seconddec;

            } else

            if (secondnumber.equals("A")) {

                seconddec = 4.0;
                total += seconddec;

            } else

            if (secondnumber.equals("A-")) {

                seconddec = 3.7;
                total += seconddec;

            } else

            if (secondnumber.equals("B+")) {

                seconddec = 3.4;
                total += seconddec;

            } else

            if (secondnumber.equals("B")) {

                seconddec = 3.0;
                total += seconddec;

            } else

            if (secondnumber.equals("B-")) {

                seconddec = 2.7;
                total += seconddec;

            } else

            if (secondnumber.equals("C+")) {

                seconddec = 2.4;
                total += seconddec;

            } else

            if (secondnumber.equals("C")) {

                seconddec = 2.0;
                total += seconddec;

            } else

            if (secondnumber.equals("C-")) {

                seconddec = 1.7;
                total += seconddec;

            } else

            if (secondnumber.equals("F")) {

                seconddec = 0;
                total += seconddec;

            }

            thirdnumber = ream.nextLine();

            if (thirdnumber.equals("A+")) {

                thirddec = 4.4;
                total += thirddec;

            } else

            if (thirdnumber.equals("A")) {

                thirddec = 4.0;
                total += thirddec;

            } else

            if (thirdnumber.equals("A-")) {

                thirddec = 3.7;
                total += thirddec;

            } else

            if (thirdnumber.equals("B+")) {

                thirddec = 3.4;
                total += thirddec;

            } else

            if (thirdnumber.equals("B")) {

                thirddec = 3.0;
                total += thirddec;

            } else

            if (thirdnumber.equals("B-")) {

                thirddec = 2.7;
                total += thirddec;

            } else

            if (thirdnumber.equals("C+")) {

                thirddec = 2.4;
                total += thirddec;

            } else

            if (thirdnumber.equals("C")) {

                thirddec = 2.0;
                total += thirddec;

            } else

            if (thirdnumber.equals("C-")) {

                thirddec = 1.7;
                total += thirddec;

            } else

            if (thirdnumber.equals("F")) {

                thirddec = 0;
                total += thirddec;

            }

            fourthnumber = ream.nextLine();

            if (fourthnumber.equals("A+")) {

                fourthdec = 4.4;
                total += fourthdec;

            } else

            if (fourthnumber.equals("A")) {

                fourthdec = 4.0;
                total += fourthdec;

            } else

            if (fourthnumber.equals("A-")) {

                fourthdec = 3.7;
                total += fourthdec;

            } else

            if (fourthnumber.equals("B+")) {

                fourthdec = 3.4;
                total += fourthdec;

            } else

            if (fourthnumber.equals("B")) {

                fourthdec = 3.0;
                total += fourthdec;

            } else

            if (fourthnumber.equals("B-")) {

                fourthdec = 2.7;
                total += fourthdec;

            } else

            if (fourthnumber.equals("C+")) {

                fourthdec = 2.4;
                total += fourthdec;

            } else

            if (fourthnumber.equals("C")) {

                fourthdec = 2.0;
                total += fourthdec;

            } else

            if (fourthnumber.equals("C-")) {

                fourthdec = 1.7;
                total += fourthdec;

            } else

            if (fourthnumber.equals("F")) {

                fourthdec = 0;
                total += fourthdec;

            }

            fifthnumber = ream.nextLine();

            if (fifthnumber.equals("A+")) {

                fifthdec = 4.4;
                total += fifthdec;

            } else

            if (fifthnumber.equals("A")) {

                fifthdec = 4.0;
                total += fifthdec;

            } else

            if (fifthnumber.equals("A-")) {

                fifthdec = 3.7;
                total += fifthdec;

            } else

            if (fifthnumber.equals("B+")) {

                fifthdec = 3.4;
                total += fifthdec;

            } else

            if (fifthnumber.equals("B")) {

                fifthdec = 3.0;
                total += fifthdec;

            } else

            if (fifthnumber.equals("B-")) {

                fifthdec = 2.7;
                total += fifthdec;

            } else

                if (fifthnumber.equals("C+")) {

                fifthdec = 2.4;
                    total += fifthdec;

            } else

            if (fifthnumber.equals("C")) {

                fifthdec = 2.0;
                total += fifthdec;

            } else

            if (fifthnumber.equals("C-")) {

                fifthdec = 1.7;
                total += fifthdec;

            } else

            if (fifthnumber.equals("F")) {

                fifthdec = 0;
                total += fifthdec;

            }

            sixthnumber = ream.nextLine();

            if (sixthnumber.equals("A+")) {

                sixthdec = 4.4;
                total += sixthdec;

            } else

            if (sixthnumber.equals("A")) {

                sixthdec = 4.0;
                total += sixthdec;

            } else

            if (sixthnumber.equals("A-")) {

                sixthdec = 3.7;
                total += sixthdec;

            } else

            if (sixthnumber.equals("B+")) {

                sixthdec = 3.4;
                total += sixthdec;

            } else

            if (sixthnumber.equals("B")) {

                sixthdec = 3.0;
                total += sixthdec;

            } else

            if (sixthnumber.equals("B-")) {

                sixthdec = 2.7;
                total += sixthdec;

            } else

            if (sixthnumber.equals("C+")) {

                sixthdec = 2.4;
                total += sixthdec;

            } else

            if (sixthnumber.equals("C")) {

                sixthdec = 2.0;
                total += sixthdec;

            } else

            if (sixthnumber.equals("C-")) {

                sixthdec = 1.7;
                total += sixthdec;

            } else

            if (sixthnumber.equals("F")) {

                sixthdec = 0;
                total += sixthdec;

            }

            seventhnumber = ream.nextLine();

            if (seventhnumber.equals("A+")) {

                seventhdec = 4.4;
                total += seventhdec;

            } else

            if (seventhnumber.equals("A")) {

                seventhdec = 4.0;
                total += seventhdec;

            } else

            if (seventhnumber.equals("A-")) {

                seventhdec = 3.7;
                total += seventhdec;

            } else

            if (seventhnumber.equals("B+")) {

                seventhdec = 3.4;
                total += seventhdec;

            } else

            if (seventhnumber.equals("B")) {

                seventhdec = 3.0;
                total += seventhdec;

            } else

            if (seventhnumber.equals("B-")) {

                seventhdec = 2.7;
                total += seventhdec;

            } else

            if (seventhnumber.equals("C+")) {

                seventhdec = 2.4;
                total += seventhdec;

            } else

            if (seventhnumber.equals("C")) {

                seventhdec = 2.0;
                total += seventhdec;

            } else

            if (seventhnumber.equals("C-")) {

                seventhdec = 1.7;
                total += seventhdec;

            } else

            if (seventhnumber.equals("F")) {

                seventhdec = 0;
                total += seventhdec;

            }

            eighthnumber = ream.nextLine();

            if (eighthnumber.equals("A+")) {

                eighthdec = 4.4;
                total += eighthdec;

            } else

            if (eighthnumber.equals("A")) {

                eighthdec = 4.0;
                total += eighthdec;

            } else

            if (eighthnumber.equals("A-")) {

                eighthdec = 3.7;
                total += eighthdec;

            } else

            if (eighthnumber.equals("B+")) {

                eighthdec = 3.4;
                total += eighthdec;

            } else

            if (eighthnumber.equals("B")) {

                eighthdec = 3.0;
                total += eighthdec;

            } else

            if (eighthnumber.equals("B-")) {

                eighthdec = 2.7;
                total += eighthdec;

            } else

            if (eighthnumber.equals("C+")) {

                eighthdec = 2.4;
                total += eighthdec;

            } else

            if (eighthnumber.equals("C")) {

                eighthdec = 2.0;
                total += eighthdec;

            } else

            if (eighthnumber.equals("C-")) {

                eighthdec = 1.7;
                total += eighthdec;

            } else

            if (eighthnumber.equals("F")) {

                eighthdec = 0;
                total += eighthdec;

            }

            JButton b1 = new JButton("Ok");
            b1.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    panel.dispose();
                }
            });

            JPanel panel1 = new JPanel(new GridLayout(0, 4));
            panel1.add(new JLabel("Your GPA is: "));
            panel1.add(new JTextField());

            double gpa = Double.parseDouble(GPA.getText());

            gpa = total / 8;

            JFrame frame = new JFrame();
            JOptionPane.showInputDialog(frame, "Your GPA is" + gpa);


            break;
        case JOptionPane.CANCEL_OPTION:

            panel.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

            break;
        }


}

    }

错误堆栈跟踪为

Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
    at java.awt.Container.checkNotAWindow(Container.java:490)
    at java.awt.Container.addImpl(Container.java:1091)
    at java.awt.Container.add(Container.java:973)
    at javax.swing.plaf.basic.BasicOptionPaneUI.addMessageComponents(BasicOptionPaneUI.java:358)
    at com.apple.laf.AquaOptionPaneUI.createMessageArea(AquaOptionPaneUI.java:92)
    at javax.swing.plaf.basic.BasicOptionPaneUI.installComponents(BasicOptionPaneUI.java:172)
    at javax.swing.plaf.basic.BasicOptionPaneUI.installUI(BasicOptionPaneUI.java:141)
    at javax.swing.JComponent.setUI(JComponent.java:666)
    at javax.swing.JOptionPane.setUI(JOptionPane.java:1860)
    at javax.swing.JOptionPane.updateUI(JOptionPane.java:1882)
    at javax.swing.JOptionPane.<init>(JOptionPane.java:1845)
    at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:857)
    at javax.swing.JOptionPane.showConfirmDialog(JOptionPane.java:795)
    at javax.swing.JOptionPane.showConfirmDialog(JOptionPane.java:757)
    at Caculator.main(Caculator.java:55)

如果我在Caculator.main(caculator.java:55)单击“

int result = JOptionPane.showConfirmDialog(null, panel, "Quesion", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);

该错误消息告诉您确切的问题是什么,在哪里。

您的panel对象的类型为JFrame ,它是一个Container。 您不能将容器添加到对话框中 ,这是您在下一行中要尝试的操作:

int result = JOptionPane.showConfirmDialog(null, panel, "Quesion", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);

panel更改为JPanel 您将需要进行更多更正,例如:

  1. 删除它,因为JPanel不存在dispose()方法:

     panel.dispose(); 
  2. 并删除它,因为JPanel不存在setDefaultCloseOperation()方法:

     panel.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

这是您的GPA计算器的工作副本。

  1. 我已经大大简化了用于将GPA点计算为单独方法的类合并逻辑。

  2. 我将所有String变量都更改为JTextField因为您将需要文本字段的实例来获取在每个字段中输入的文本。


import java.awt.GridLayout;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Caculator {
    public static void main(String args[]) {
        JPanel panel = new JPanel(new GridLayout(8, 2));

        JTextField firstnumber = new JTextField(20);
        JTextField secondnumber = new JTextField(20);
        JTextField thirdnumber = new JTextField(20);
        JTextField fourthnumber = new JTextField(20);
        JTextField fifthnumber = new JTextField(20);
        JTextField sixthnumber = new JTextField(20);
        JTextField seventhnumber = new JTextField(20);
        JTextField eighthnumber = new JTextField(20);

        panel.add(new JLabel("First Grade"));
        panel.add(new JLabel("Second Grade"));
        panel.add(firstnumber);
        panel.add(secondnumber);
        panel.add(new JLabel("Third Grade"));
        panel.add(new JLabel("Fourth Grade"));
        panel.add(thirdnumber);
        panel.add(fourthnumber);
        panel.add(new JLabel("Fifth Grade"));
        panel.add(new JLabel("Sixth Grade"));
        panel.add(fifthnumber);
        panel.add(sixthnumber);
        panel.add(new JLabel("Seventh Grade"));
        panel.add(new JLabel("Eighth Grade"));
        panel.add(seventhnumber);
        panel.add(eighthnumber);

        int result = JOptionPane.showConfirmDialog(null, panel, "Quesion", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);

        double total = 0;
        if (result == JOptionPane.OK_OPTION) {
            total += getPoints(firstnumber.getText());

            total += getPoints(firstnumber.getText());

            total += getPoints(thirdnumber.getText());

            total += getPoints(fourthnumber.getText());

            total += getPoints(fifthnumber.getText());

            total += getPoints(sixthnumber.getText());

            total += getPoints(seventhnumber.getText());

            total += getPoints(eighthnumber.getText());

            JTextField GPA = new JTextField(20);

            JPanel panel1 = new JPanel(new GridLayout(2, 2));
            panel1.add(new JLabel("Your GPA is: "));
            panel1.add(GPA);

            double gpa = total / 8;
            GPA.setText(String.valueOf(gpa));

            JOptionPane.showMessageDialog(null, panel1);
        }
    }

    static double getPoints(String grade) {
        double points = 0;
        if (grade.equals("A+")) {
            points = 4.4;
        } else if (grade.equals("A")) {
            points = 4.0;
        } else if (grade.equals("A-")) {
            points = 3.7;
        } else if (grade.equals("B+")) {
            points = 3.4;
        } else if (grade.equals("B")) {
            points = 3.0;
        } else if (grade.equals("B-")) {
            points = 2.7;
        } else if (grade.equals("C+")) {
            points = 2.4;
        } else if (grade.equals("C")) {
            points = 2.0;
        } else if (grade.equals("C-")) {
            points = 1.7;
        } else if (grade.equals("F")) {
            points = 0;
        }
        return points;
    }
}

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM