【问题标题】:Java GUI adding buttons with a for loopJava GUI 添加带有 for 循环的按钮
【发布时间】:2017-02-17 13:52:10
【问题描述】:

嗨,我正在制作一个乐透 gui,用户从 28 个数字中选择 4 个数字。我目前这样做的方式如下

private void no1InputButtonActionPerformed(java.awt.event.ActionEvent evt) {                                               
    numberSelectionList.add("1");
}                                              

private void no2InputButtonActionPerformed(java.awt.event.ActionEvent evt) {                                               
     chosenNumDisplayLabel.setText(chosenNumDisplayLabel.getText()+" 2");
}                                              

private void no3InputButtonActionPerformed(java.awt.event.ActionEvent evt) {                                               
     chosenNumDisplayLabel.setText(chosenNumDisplayLabel.getText()+" 3");
}        

等到 28 个数字。

  • 有没有办法通过 for 循环将动作添加到每个按钮 因为这看起来更合乎逻辑?
  • 还有没有办法将每个选择的数字添加到一个数组中?

【问题讨论】:

    标签: java swing user-interface


    【解决方案1】:

    创建一个可以被所有按钮共享的单个动作。然后,Action 将简单地获取按钮的文本,然后进行一些处理。

    查看setText method with panel and button。此示例将向您展示如何:

    1. 创建一个 ActionListener 供每个按钮共享
    2. 将文本“追加”到文本字段而不是替换文本
    3. 使用键绑定,这样用户也可以只输入数字

    【讨论】:

      【解决方案2】:

      在每个按钮上你可以设置一个动作命令:

       button.setActionCommand("1");
      

      然后您可以使用 ActionEvent 获取值:

       evt.getActionEvent();
      

      更完整:

        ActionListener listener = new ActionListener()
        {
           @Override
           public void actionPerformed(ActionEvent e)
           {
              System.out.println(e.getActionCommand()+" clicked");
           }
        };
      
        int howMuchYouWant = 32;
        for(int i = 0; i<howMuchYouWant; i++)
        {
           JButton button = new JButton(""+(i+1));
           button.setActionCommand(""+i);
           button.addActionListener(listener);
           //add to whatever gui you want here
        }
      

      【讨论】:

      • 我可以用这个生成多少个按钮?他需要生成 28 个按钮,每个按钮都应该有一个事件,所以你对一个按钮的回答:)
      猜你喜欢
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 2018-10-16
      • 2017-04-25
      • 2016-04-24
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多