2016-07-17 13 views
1

でクリックしてください。レイアウトはhereです。のJButtonは一度

メインクラス:

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 framejButton2をクリックすると、今私はTest panelからjButton1を呼び出し、そのactionCommandを取得したいです。 addButtonをクリックすると、動的なbtn = new JButton("Test")が追加され、Test panelを参照します。私がしようとしていることは、たとえばbtnを追加することです。たとえば、btn2, btn3, btn4,を追加した場合、jButton2を使用します。doClick()のうち、jButton1のactionCommandsを使用します。

私はaddMenu()にこのコード行を追加する場合:

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

を次にaddButtonのすべてのクリックでbtn2, btn3, btn4jButton1の全てを一度にクリックされました。しかし、私はMain framejButton2を使用して、すべてのjButton1をクリックしたい場合:

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

をしかし、この場合にのみ、最後のjButton1は(すなわちbtn4)をクリックします。 私はどのようにしてjButton1btn2, btn3, btn4に一度に動的に追加するには、jButton2を使用してすべてをクリックすることができますか質問したいと思いますか? 本当にありがとうございます。

+0

1)['AbstractButton.doClick()'](http://docs.oracle.com/javase/8/docs/api/javax/swing/AbstractButton.html#doClick--)を使用してください。2) bの場合[MCVE]または[ショート、自己完結型、正しい例](http://www.sscce.org/)を投稿してください。 –

+0

http://stackoverflow.com/help/someone-answersを参照してください。 – c0der

答えて

0

jPanel1がテストのインスタンスである場合は、でjButton1を得ることができます「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; 
    } 
} 

をゲッターではなく、静的呼び出しを使用します。

JButton jButton1 = jPanel1.getButton1(); 

それとも

によってクリックされてい
jPanel1.getButton1().doClick();