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