簡體   English   中英

JSpinner在動作監聽器中不起作用

[英]JSpinner doesn't work in action listener

當我在外面的jspinner中創建我的jspinner時,我在另一個actionlistener的里面有一個actionlistener,但在里面的jspinner中卻沒有。 這是我的代碼。問題是什么?

這是無效的代碼,如果我將sp和js放在內部動作偵聽器之外,它將起作用。

    menuItem = new JMenuItem("Insert Exams", KeyEvent.VK_E);
    menuItem.addActionListener(new ActionListener() {


        @Override
        public void actionPerformed(ActionEvent arg0) {
            count = 0;
            jt = new ArrayList[3];
            for (int i = 0; i < 3; i++)
                jt[i] = new ArrayList<JTextField>();
            panel = new JPanel();
            panel.setLocation(0, 0);
            panel.setSize(d.width, d.height);
            panel.setLayout(null);

            JButton add = new JButton("add Exam");
            add.setSize(120, 80);
            add.setLocation(250, 100);


            add.addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent arg0) {
                    sp = new SpinnerNumberModel(1, 1, 5, 1);
                    js = new JSpinner(sp);
                    js.setSize(100, 30);
                    js.setLocation(450, 80 + count * 50);
                    panel.add(js);

                    for (int i = 1; i < 3; i++) {
                        JTextField jt1 = new JTextField(20);
                        jt1.setSize(150, 30);
                        jt1.setLocation(450 + i * 200, 80 + count * 50);

                        jt[i].add(jt1);
                        panel.add(jt1);
                    }
                    count++;
                    repaint();
                }
            });
            panel.add(add);

            setContentPane(panel);

        }
    });

您應該使用revalidate而不是repaint

您還應該依賴LayoutManager而不是使用setSizesetLocation

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM