单击它时如何使按钮显示对话框?

时间:2013-05-13 19:04:32

标签: java swing jbutton

我有12个按钮,每个按钮上都有一个家人的名字。我想让按钮起作用。当用户点击他们的名字时,我想要弹出一条消息并说出“Hello(无论名称)!”我的代码如下。你能告诉我如何使这些按钮按照我想要的方式运行。提前谢谢。

    import javax.swing.JFrame;
    import javax.swing.JButton;
    import javax.swing.JPanel;
    import java.awt.Dimension;
    import java.awt.GridLayout;

    public class NameButtons{

    public static void main(String[] args) throws Exception {
        JFrame frame = new JFrame("Pick A Name");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel buttonPanel = new JPanel();
        JPanel containerPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(4,6));
        buttonPanel.add(new JButton("Stephanie"));
        buttonPanel.add(new JButton("Dwayne"));
        buttonPanel.add(new JButton("Jennifer"));
        buttonPanel.add(new JButton("Brian"));
        buttonPanel.add(new JButton("Joseph"));
        buttonPanel.add(new JButton("Justin"));
        buttonPanel.add(new JButton("Raine"));
        buttonPanel.add(new JButton("Hunter"));
        buttonPanel.add(new JButton("Grayson"));
        buttonPanel.add(new JButton("Abel"));
        buttonPanel.add(new JButton("Janice"));
        buttonPanel.add(new JButton("Bob"));
        buttonPanel.setPreferredSize(new Dimension(300, 400));
        containerPanel.add(buttonPanel);

        frame.getContentPane().add(containerPanel);
        frame.pack();
        frame.setVisible(true);
    }
}

5 个答案:

答案 0 :(得分:0)

我建议不要使用匿名对象,但首先要创建对象。

JButton button = new JButton("Name");

然后你可以使用addActionListener方法。

button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e)
    {
        // This is the code that is ran when the button is clicked.
        System.out.println("Hello name");
    }
});

我在做什么?

嗯,你告诉按钮的是使用这个ActionListener对象。现在,因为ActionListener包含抽象方法actionPerformed,所以您需要为该方法提供代码。因此,您使用代码传递方法。

以您的某个按钮为例

JButton stephButton = new JButton("Stephanie");
stepButton.setVisible(true);
// Create the button.
stephButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e)
    {
        // Message printed to stephanie.
        System.out.println("Hello Stephanie!");
    }

答案 1 :(得分:0)

This guide显示了将操作绑定到UI元素的最简单方法之一 您只需为按钮设置'action'并实现actionPerformed处理程序,如果单击任何UI元素,将调用该处理程序。您可以通过阅读e.getActionCommand()来区分按钮。

答案 2 :(得分:0)

而不是:

buttonPanel.add(new JButton("Stephanie"));

执行:

JButton stephanieButton = new JButton("Stephanie");
stephanieButton.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        //Do something
    }
});
buttonPanel.add(stephanieButton);

答案 3 :(得分:0)

为每个按钮添加动作侦听器。

JButton b1=new JButton("Stephanie");
JButton b2=new JButton("Dwayne");
buttonPanel.add(b1);
buttonPanel.add(b2);


b1.addActionListener(this);
b2.addActionListener(this);

public void actionPerformed(ActionEvent e) {
        if(e.getSource() == b1)
        {
          //Display Stephanie
        }
    }  

答案 4 :(得分:0)

您需要为每个按钮添加动作侦听器。就个人而言,我建议您在面板外部创建按钮,然后在附加按钮监听器后添加它们。

例如:

JButton Dwayne = new JButton("Dwayne");
Dwayne.addActionListener(this);
buttonPanel.add(Dwayne);

这是一个可以帮助您的教程:http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html