java jButton立即单击
如前所述,我有Main Frame
,其中包含JXTaskPainContainer
、jPanel1
和jButton2
以及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 楼答案
使用getter而不是静态调用测试。jButton1'
如果jPanel1是测试实例,则可以通过以下方式获得jButton1:
或者点击它