从一系列按钮返回选项

时间:2012-08-24 11:12:54

标签: java swing jbutton

我有一个从A-Z创建按钮的数组,但是我想在它中使用它 返回按下按钮的方法。

这是按钮的原始代码:

String  b[]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
for(i = 0; i < buttons.length; i++)
{
    buttons[i] = new JButton(b[i]);
    buttons[i].setSize(80, 80);
    buttons[i].setActionCommand(b[i]);
    buttons[i].addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            String choice = e.getActionCommand();
            JOptionPane.showMessageDialog(null, "You have clicked: "+choice);
        }
    });
    panel.add(buttons[i]);
}

5 个答案:

答案 0 :(得分:2)

  • ActionListener可以返回(代表Listeners的<{1}} {/ 1}} {/ 1}}

  • 您可以通过此Object
  • 确定JButtonJButton

答案 1 :(得分:2)

我不确定你的问题是什么,所以我有几个答案:

  1. 如果您想将按钮创建拉入方法 - 请参阅示例中的getButton方法

  2. 如果要在单击时访问实际按钮,可以使用ActionEvent.getSource()方法(未显示)或在声明期间将按钮标记为final(如示例所示)。从那里你可以用按钮做任何你想做的事。

  3. 如果你问的是“如何创建一个接收一系列字母的方法并将最后点击的按钮返回给我”,你应该修改你的问题以明确说明。我没有在这里回答,因为除非你有一个非常特殊的情况,否则它可能不是解决你正在处理的问题的好办法。你可以解释为什么你需要这样做,我们可以建议一个更好的选择。

  4. 示例:

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class TempProject extends Box{
        /** Label to update with currently pressed keys */
        JLabel output = new JLabel();
    
        public TempProject(){
            super(BoxLayout.Y_AXIS);
            for(char i = 'A'; i <= 'Z'; i++){
                String buttonText = new Character(i).toString();
                JButton button = getButton(buttonText);
                add(button);
            }
        }
    
        public JButton getButton(final String text){
            final JButton button = new JButton(text);
            button.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    JOptionPane.showMessageDialog(null, "You have clicked: "+text);
                    //If you want to do something with the button:
                    button.setText("Clicked"); // (can access button because it's marked as final)
                }
            });
            return button;
        }
    
        public static void main(String args[])
        {
            EventQueue.invokeLater(new Runnable()
            {
                public void run()
                {
                    JFrame frame = new JFrame();
                    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
                    frame.setContentPane(new TempProject());    
                    frame.pack();
                    frame.setVisible(true);
                    new TempProject();
                }
            });
        }   
    }
    

答案 2 :(得分:1)

我不确定你想要什么,但是如何将密钥存储在队列中(例如Deque<String>)以及需要轮询已按下查询队列的按钮的任何方法。这样你也可以按下按钮的顺序。

或者,您可以在每个按钮(或调度事件的中心按钮)上注册其他动作侦听器,这些按钮在被触发时接收事件。我可能更喜欢这种方法,但这取决于你的确切要求。

答案 3 :(得分:0)

尝试将Action侦听器更改为此

 JOptionPane.showMessageDialog(null, "You have clicked: "+((JButton)e.getSource()).getText());

答案 4 :(得分:0)

1。首先,当您要创建按钮时,请在A到Z上设置文本。

2。现在,当您的GUI准备就绪,然后单击按钮,提取按钮上的文本,然后显示您单击此按钮的消息。

<强>例如

我告诉你,如何提取按下按钮的名称,我正在使用getText()方法

butt.addActionListener(new ActionListener(){

   public void actionPerformed(ActionEvent e)
       {

       JOptionPane.showMessageDialog(null, "You have clicked: "+butt.getText());

       }


   });