Java按钮不起作用

时间:2013-05-13 18:55:42

标签: java swing mouseevent jbutton japplet

所以我的程序按钮不起作用。我有它,如果他们按下它们会改变一些变量,这些变量反过来改变文本的标签。尽可能地告诉我按下按钮时不会添加变量。我无法弄清楚什么是错的,但是我又是Java的新手......

无论如何,这是我的代码:

    import javax.swing.JApplet;
    import javax.swing.JButton;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.JProgressBar;
    import javax.swing.JFormattedTextField;
    import javax.swing.JTextField;
    import javax.swing.JLabel;
    import javax.swing.SwingConstants;


    public class qa extends JApplet {

        int y=0;
        int x=0;
        int q=0;


        /**
         * Create the applet.
         */
        public qa() {
            getContentPane().setLayout(null);

            JButton btnYes = new JButton("YES");
            btnYes.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent arg0) {
                    y+=1;
                    q+=1;
                }
            });
            btnYes.setBounds(135, 220, 85, 42);
            getContentPane().add(btnYes);

            JButton btnNo = new JButton("NO");
                btnNo.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent e) {
                    x+=1;
                    q+=1;
                }
            });
            btnNo.setBounds(230, 220, 85, 42);
            getContentPane().add(btnNo);

            JLabel lblNewLabel = new JLabel("Do you like pizza?");
            lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
            lblNewLabel.setBounds(0, 97, 450, 50);
            getContentPane().add(lblNewLabel);
            if (q>=1)
            {
                lblNewLabel.setText("Really?");
            }
        }
    }

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

  1. 不要使用NullLayout

  2. MouseListener不适合JButton的监听器,所有MouseEvents都是在JButtons API中实现的并且正确

  3. 添加并使用Swing Action,分别为。 JButton的ActionListener

答案 1 :(得分:1)

一切都很好。只有您的if (q>=1)与任何侦听器操作无关。这是指针。

  1. 将JLabel移到构造函数之外。

  2. lblNewLabel.setText("YES Really?");放入您的mouseClicked()方法中。

        @Override
        public void mouseClicked(MouseEvent arg0) {
                y+=1;
                q+=1;
                if (q>2)
                    lblNewLabel.setText("YES Really?");
                System.out.println("YES: " + y + " q :" + q);
            }
        });