gpt4 book ai didi

java - JOptionPane 错误 Java

转载 作者:行者123 更新时间:2023-12-02 02:57:36 25 4
gpt4 key购买 nike

我正在尝试制作一个 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)

如果我点击“at Caculator.main(caculator.java:55)它把我带到了这一行

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

最佳答案

错误消息准确地告诉您错误所在以及错误位置。

您的panel对象的类型为JFrame,它是一个容器。您无法将容器添加到对话框,这正是您在以下行中尝试执行的操作:

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

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

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

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

    panel.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
<小时/>

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

  1. 我已显着简化了您的类(class),将计算 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;
}
}
<小时/>

希望这有帮助。

关于java - JOptionPane 错误 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42851005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com