以下代码段会在按下“按钮”时创建一个新按钮。我想知道是否有任何方法可以为此新按钮分配名称,动作侦听器或任何其他属性以便使用它。
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
panel.add(new JButton("Hello"));
frame.revalidate();
frame.repaint();
}
});
我正在寻找的示例:按下按钮,创建一个具有名称并在单击时执行操作的新按钮。 (最好是多次点击时我可以动态制作多个按钮)
答案 0 :(得分:0)
调用test();进入你的第一个按钮的actionPerformed()。
每次单击第一个按钮都会动态创建另一个按钮并单独命名。每个按钮也可以动态创建单独命名的按钮。
//The counter is used to name the buttons individually
//It doesn´t matter wich of the created buttons will call test()
//any new button will have a different name than the other buttons
public int counter;
public void test() {
JButton btn = new JButton();
//Now you can edit the properties
//btn.setLocation
//btn.setSize
//btn.setVisible
//btn...
btn.setText("Hello");
btn.setName("Button" + counter);
panel.add(btn);
//Add of listener is untested, but it should work like this
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
test();
}
});
counter ++;
}
答案 1 :(得分:0)
您必须先创建JButton
:
JButton but = new JButton();
but.setText("Button");
然后添加监听器。在覆盖actionPerformed()
内部实现单击按钮时要执行的操作:
but.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Actions
}
});
最后添加到面板:
panel.add(but);
答案 2 :(得分:0)
这是怎么做的:
JTextField textfield= new JTextField();
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
JButton btn=new JButton();
btn.setText(textfield.getText().toString());
textfield.setText("");
btn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
//the action on the button
}
});
panel.add(btn);
frame.revalidate();
frame.repaint();
}
});
答案 3 :(得分:0)
简单,使用 AbstractAction :
Icon myIcon = null;
JButton btn = new JButton(new AbstractAction("ClickMe", myIcon) {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showInputDialog("hello");
}
});
panel.add(btn);
干杯!