【问题标题】:Java Buttons not workingJava 按钮不起作用
【发布时间】:2013-05-13 18:55:42
【问题描述】:

所以在我的程序中按按钮不起作用。我有它,如果按下它们,它们会更改一些变量,这些变量反过来会更改文本的标签。据我所知,按下按钮时变量不会添加。我不知道出了什么问题,但是我又是 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?");
            }
        }
    }

感谢您的帮助!

【问题讨论】:

  • 定义“不工作”。
  • 对不起,我的意思是当我按下按钮时,它不会给变量 y 和 q 和 x 加 1。就像按钮甚至不注册点击一样
  • 查看How to Make Applets 了解创建小程序的正确方法。另请阅读有关使用布局管理器和如何使用按钮的部分。本教程将为您提供使用 Swing 的基础知识。

标签: java swing mouseevent jbutton japplet


【解决方案1】:
  1. 不要使用 NullLayout

  2. MouseListener 不是 JButton 的正确侦听器,所有 MouseEvent 都在 JButtons API 中正确实现

  3. 分别添加和使用 Swing 动作。 JButton 的 ActionListener

【讨论】:

    【解决方案2】:

    一切正常。只有您的 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);
              }
          });
      

    【讨论】:

      猜你喜欢
      • 2017-09-13
      • 2016-12-10
      • 2015-02-10
      • 2011-12-02
      相关资源
      最近更新 更多