java - 当我尝试运行该类时出现 Java 安全错误

标签 java swing spinner jlabel

我对 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);
}


}

我希望我做得对,我刚刚加入。抱歉,如果我搞砸了。

最佳答案

我可以完美地运行这个程序。

只有当我点击确认按钮时才会出现异常

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 code> 作为微调器的模型。只需将这些行更改为

int q1inputINT = (Integer)q1spin.getValue();

关于java - 当我尝试运行该类时出现 Java 安全错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19062743/

相关文章:

java - 从 jar 运行 jar

java - 使用覆盖 JPanels 创建 View

java - 我的堆排序只排列在数组的特定间隔

java - 图形列表2D

java - 将值传递给 JLabel

ajax - 我在哪里可以找到一个像样的透明 ajax 微调器?

android - 具有自定义文本字体和颜色的微调器

java - 作为参数传递的对象不会创建多个实例

java - 如何不断更新 ActionListener 中的 JLabel?

android - 突出显示选定的微调项