我对java非常陌生,我可能会提前与父亲联系,而不是我应该在这一点上尝试,但我正在努力学习。
我在尝试运行程序时遇到此错误
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
这是我试图运行的代码
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
public class Assingment5 extends JFrame {
public Assingment5() {
//fonts
java.awt.Font titlefont = new java.awt.Font("Dialog",Font.BOLD,20);
java.awt.Font subfont = new java.awt.Font("Dialog",Font.BOLD,14);
java.awt.Font body = new java.awt.Font("Dialog",Font.PLAIN,12);
//window
setSize(1000, 800);
this.setLayout(null);
setTitle("If Statements Assingment");
setLocation(350, 50);
setDefaultCloseOperation(EXIT_ON_CLOSE);
//Welcome Text
JLabel welcomelb = new JLabel("Welcome to my assingment!");
welcomelb.setFont(titlefont);
welcomelb.setBounds(20, 10, 500, 30);
add(welcomelb);
//second set of welcome text
JLabel subwelcome = new JLabel("There are 5 Programs to choose from:");
subwelcome.setFont(subfont);
subwelcome.setBounds(20, 30, 300, 30);
add(subwelcome);
//Question one variables
//Question one title
JLabel q1title = new JLabel("Question 1");
q1title.setFont(subfont);
q1title.setBounds(20, 70, 100, 30);
add(q1title);
//Question one dialog1
JLabel q1d1 = new JLabel("Enter a number and confirm");
q1d1.setFont(body);
q1d1.setBounds(20, 100, 200, 30);
add(q1d1);
//spinner for input
int spinnerstart = 1;
SpinnerModel number = new SpinnerNumberModel(spinnerstart, spinnerstart - 1, spinnerstart + 50, 1);
final JSpinner q1spin = addSpinner(this,number);
q1spin.setBounds(20, 130, 50, 25);
//Okay button
JButton btconfirm = new JButton("Confirm");
//x, y, width, height
btconfirm.setBounds(80, 130, 80, 25);
btconfirm.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String q1output = null;
Object q1input = q1spin.getValue();
int q1inputINT = Integer.parseInt((String) q1input);
if (q1inputINT <10 && q1inputINT >1) {
q1output = "True";
}
else {
q1output = "False";
}
//Question one output
JLabel q1d2 = new JLabel();
java.awt.Font subfont = new java.awt.Font("Dialog",Font.BOLD,14);
q1d2.setFont(subfont);
q1d2.setBounds(20, 300, 200, 30);
q1d2.setText(q1output);
add(q1d2);
}
});
add(btconfirm);
}
static protected JSpinner addSpinner(Container c, SpinnerModel model) {
JSpinner spinner = new JSpinner(model);
c.add(spinner);
return spinner;
}
public static void main(String[] args) {
Assingment5 window = new Assingment5();
window.setVisible(true);
}
}
我希望我做得对,我刚加入。对不起,如果我搞砸了。
答案 0 :(得分:2)
我可以很好地运行这个程序。
点击确认按钮时,我只收到异常
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at Assingment5$1.actionPerformed(Assingment5.java:71)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
...
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:673)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
我希望您遇到同样的问题,因为您发布的部分堆栈跟踪来自事件线程,而您的main
方法未在EDT上运行。下次的建议是发布整个堆栈跟踪。
ClassCastException
消息相当清楚:
Object q1input = q1spin.getValue();
int q1inputINT = Integer.parseInt((String) q1input);
在此代码段中,q1input
变量已经是Integer
而不是String
,因为您使用SpinnerNumberModel
作为微调器的模型。只需将这些行更改为
int q1inputINT = (Integer)q1spin.getValue();