有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java jButton立即单击

如前所述,我有Main Frame,其中包含JXTaskPainContainerjPanel1jButton2以及AddButton,其中添加了动态btn。布局为here

主类:

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());
}
}

现在,当我在{}上单击{}时,我想从{}调用{},并获取他们的{}。当我们单击addButton时,它添加动态btn = new JButton("Test"),并引用Test panel。我试图做的事情是添加动态的btn,例如,如果我们添加btn2, btn3, btn4,,然后使用jButton2我想doClick()所有jButton1操作命令

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

Test.jButton1.setActionCommand(Integer.toString(count));
Test.jButton1.doClick();

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

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
     Test.jButton1.setActionCommand(Integer.toString(count));
     Test.jButton1.doClick();
}

但在这种情况下,只单击最后一个jButton1(即btn4)。 我想问一下,如何使用jButton2一次单击jButton1的所有动态添加的btn2, btn3, btn4? 非常感谢您的帮助


共 (1) 个答案

  1. # 1 楼答案

    使用getter而不是静态调用测试。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();