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

Java 如何使按钮在单击时显示对话框?,java,swing,jbutton,Java,Swing,Jbutton,我有12个按钮,每个按钮上都有我家人的名字。我想让按钮发挥作用。当用户点击他们的名字时,我希望弹出一条消息并说“你好(无论名字)!”我的代码如下。你能告诉我如何使这些按钮按我所希望的方式工作吗。提前谢谢 import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JPanel; import java.awt.Dimension; import java.awt.Gri

我有12个按钮,每个按钮上都有我家人的名字。我想让按钮发挥作用。当用户点击他们的名字时,我希望弹出一条消息并说“你好(无论名字)!”我的代码如下。你能告诉我如何使这些按钮按我所希望的方式工作吗。提前谢谢

    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);
    }
}

我建议不要使用匿名对象,而是首先创建对象

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
,因此需要为该方法提供代码。因此,将方法与代码一起传递给它

以您的一个按钮为例

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

而不是:

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


向每个按钮添加操作侦听器。

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
        }
    }  

您需要向每个按钮添加操作侦听器。就个人而言,我建议您在面板外部创建按钮,然后在附加按钮侦听器后将其添加到面板中

例如:

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

这里有一个教程也可能对您有所帮助:

使用ActionListener使用Jbutton ActionListener。我需要从代码中删除哪些内容才能使其正常工作。我是一个初学者,这真的很让人困惑。如果你看看我给你的按钮示例,复制并粘贴到你的代码中。然后将
按钮添加到面板中。当程序加载时,单击它!
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
        }
    }  
JButton Dwayne = new JButton("Dwayne");
Dwayne.addActionListener(this);
buttonPanel.add(Dwayne);