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。请参阅