![](/img/trans.png)
[英]java error says JOptionPane cannot be resolved, didn't use JOptionPane
[英]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
。 您将需要进行更多更正,例如:
删除它,因为JPanel
不存在dispose()
方法:
panel.dispose();
并删除它,因为JPanel
不存在setDefaultCloseOperation()
方法:
panel.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
这是您的GPA计算器的工作副本。
我已经大大简化了用于将GPA点计算为单独方法的类合并逻辑。
我将所有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.