Java 按一下按钮

Java 按一下按钮,java,swing,button,actionlistener,Java,Swing,Button,Actionlistener,如前所述,我有主框架,其中包含JXTaskPainContainer,jPanel1和jButton2以及添加动态btn的AddButton。给出了布局图 主类: public class Main extends javax.swing.JFrame{ public static JXTaskPaneContainer taskPaneContainer; public static int count = 2; public Main() { initComponents();

如前所述,我有
主框架
,其中包含
JXTaskPainContainer
jPanel1
jButton2
以及添加动态
btn
AddButton
。给出了布局图

主类:

public class Main extends javax.swing.JFrame{
public static JXTaskPaneContainer taskPaneContainer;
public static int count = 2;

public Main() {
   initComponents();

   taskPaneContainer = new JXTaskPaneContainer();
   jPanel1.setLayout(new GridLayout(1,1));
   jPanel1.add(taskPaneContainer, BorderLayout.EAST);
}

private void addMenu(String Title) {
   final JXTaskPane actionPane = new JXTaskPane();
   actionPane.setSpecial(true);
   JPanel opaquePanel = new JPanel();
   opaquePanel.setOpaque(true);
   JButton btn = new JButton("Test");
   btn.setActionCommand(Integer.toString(count));
   cardLayoutPanel.add(new Test(count), "Test"+Integer.toString(count));

   opaquePanel.add(btn);
   actionPane.add(opaquePanel);
   taskPaneContainer.add(actionPane);
}

 private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
        count++;
        addMenu("Menu " + count);
 }

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
       Test.jButton1.doClick(); //call from Test panel
}
}
这里是测试面板:

public class Test extends javax.swing.JPanel{

/**
* Creates new form Test
* @param val
*/

public Test(int val){
   initComponents();
   jButton1.setActionCommand(Integer.toString(val));
}

public Test(){        
   initComponents();
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
   System.out.println("test"+evt.getActionCommand());
}
}
现在,当我在
主框架上单击
jButton2
时,我想从
测试面板
调用
jButton1
,并获取他们的
actionCommand
。当我们点击
addButton
时,它会添加动态
btn=new JButton(“Test”)
,并引用
测试面板。我试图做的事情是添加动态
btn
,例如,如果我们添加
btn2、btn3、btn4、
,然后使用
jButton2
我想
doClick()
所有
jButton1
操作命令

当我在
addMenu()
中添加这行代码时:

然后,在每次单击
addButton
时,立即单击
btn2、btn3、btn4
的所有
jButton1
。但是当我想使用
主框架中的
jButton2
单击所有
jButton1
时:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
     Test.jButton1.setActionCommand(Integer.toString(count));
     Test.jButton1.doClick();
}
但在这种情况下,仅单击最后一个
jButton1
(即
btn4
)。 我想问一下,如何使用
jButton2
立即单击
btn2、btn3、btn4的所有动态添加的
jButton1

非常感谢您的帮助。

使用getter而不是静态调用“Test.jButton1”

//include imports to make it an MCVE
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;
public class Test extends javax.swing.JPanel{

    JButton jButton1;   

    public Test(int val){
        initComponents();
        jButton1.setActionCommand(Integer.toString(val));
    }

    public Test(){        
        initComponents();
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
        System.out.println("test"+evt.getActionCommand());
    }

    /**
     * Add a getter, so you can get jButton1 
     */
    public JButton getjButton1() {
        return jButton1;
    }
}
如果jPanel1是测试实例,则可以通过以下方式获得jButton1:

    JButton jButton1 = jPanel1.getButton1();
或者点击它

jPanel1.getButton1().doClick();

使用getter而不是静态调用“Test.jButton1”

//include imports to make it an MCVE
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;
public class Test extends javax.swing.JPanel{

    JButton jButton1;   

    public Test(int val){
        initComponents();
        jButton1.setActionCommand(Integer.toString(val));
    }

    public Test(){        
        initComponents();
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
        System.out.println("test"+evt.getActionCommand());
    }

    /**
     * Add a getter, so you can get jButton1 
     */
    public JButton getjButton1() {
        return jButton1;
    }
}
如果jPanel1是测试实例,则可以通过以下方式获得jButton1:

    JButton jButton1 = jPanel1.getButton1();
或者点击它

jPanel1.getButton1().doClick();
1) 使用2)更快地获得更好的帮助,发布or。请参阅1)使用2)更快地获得更好的帮助,发布or。请参阅