【发布时间】:2016-11-20 02:09:09
【问题描述】:
正如我之前描述的,我有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());
}
}
现在,当我在Main frame 上单击jButton2 时,我想从Test panel 调用jButton1 并获取他们的actionCommand。当我们单击addButton 时,它会添加动态btn = new JButton("Test") 并引用Test panel。我想做的是添加动态btn,例如,如果我们添加btn2, btn3, btn4,,然后使用jButton2,我想在所有jButton1 actionCommands 中添加doClick()。
当我在addMenu()中添加这行代码时:
Test.jButton1.setActionCommand(Integer.toString(count));
Test.jButton1.doClick();
然后在每次点击addButton 时,所有jButton1 的btn2, btn3, btn4 都被一次点击。但是当我想在Main frame中使用jButton2点击所有jButton1时:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
Test.jButton1.setActionCommand(Integer.toString(count));
Test.jButton1.doClick();
}
但在这种情况下,只有最后一个jButton1 被点击(即btn4)。
我想问一下,如何使用jButton2一次点击所有动态添加的jButton1btn2, btn3, btn4?
非常感谢任何帮助。
【问题讨论】:
-
1) 使用
AbstractButton.doClick()2) 为了尽快获得更好的帮助,请发布minimal reproducible example 或Short, Self Contained, Correct Example。
标签: java swing button actionlistener