-1

我有 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);
    }
}
4

5 回答 5

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!");
    }
于 2013-05-13T19:07:22.963 回答
0

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

于 2013-05-13T19:07:49.847 回答
0

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

例如:

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

这里的教程也可以帮助你:http ://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

于 2013-05-13T19:18:03.427 回答
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);
于 2013-05-13T19:09:37.190 回答
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
        }
    }  
于 2013-05-13T19:11:19.253 回答