本文介绍了将动作添加到由另一个JButton创建的JButton的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个Jbutton按下时会创建另一个按钮,并且新按钮会添加到面板中。如何将actionListener添加到新按钮?
I have a Jbutton that when pressed creates another button and the new button is added to the panel. How to I add an actionListener to the new button?
例如:
JButton button = new JButton("lala");
button.addActionListener(this);
public void actionPerformed(ActionEvent event)
{
if (event.getSource() == button)
{
JButton newButton = new JButton("ahah");
newButton.addActionListener(this);
}
}
我想为newButton添加动作,怎么做我这样做了吗?
I want to add action to the newButton, how do I do it?
编辑代码:
public void actionPerformed(ActionEvent event)
{
if (event.getSource() == button)
{
String name = tfOne.getText();
Icon flag = new ImageIcon("flag/"+name+".png");
JButton[] newButton = new JButton[click];
newButton[click-1] = new JButton(name, flag);
p2.add(newButton[click-1]);
newButton[click-1].addActionListener(new aListener());
p2.setLayout(new GridLayout(5+click,1)); //p2 is a panel that has been created
setSize(500,450+(click*20));
click++; //number of times the button is pressed
}
}
public class aListener extends MouseAdapter
{
public void mouseClicked(MouseEvent e)
{
tfOne.setText("lala");
}
}
代码组织不好但是或多或少我想做什么
The code is not well organized but that's more or less what I want to do
推荐答案
一种方法是让一个内部类包含监听器:
One way would be to have a inner class containg the listener:
public void actionPerformed(ActionEvent event)
{
if (event.getSource() == button)
{
JButton newButton = new JButton("ahah");
newButton.addMouseListener(new yourListener());
}
}
//add this class as a inner class
public class aListener extends MouseAdapter
{
public void mouseClicked(MouseEvent e)
{
JButton buttonReference=(JButton)e.getSource(); // you want this since hardcoding the name of the button is bad if you want listeners for more then one button
buttonReference.setText("lala");
}
}
这将创建yourListener的一个实例,并添加点击它时按钮
This will create a instance of yourListener, and add that to the button when you click it
这篇关于将动作添加到由另一个JButton创建的JButton的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!