2016-04-18 10 views
0

JButtonのarrayListから作成したJButtonにアクションリスナーを設定する方法を理解しようとしています。ここJListのArrayListで作成されたJButtonにActionListenerを配置するには

は、ボタンの配列リストである:ここ

public static ArrayList<JButton> myTests; 
    public static ArrayList<JButton> selectedTests; 

は、それらを設定するロジックです:

public Devices(String[] testList, String title2) 
    { 
     myTests = createTestList(testList); 
     selectedTests = new ArrayList<JButton>(); 
     checkedSerialNo = new ArrayList(); 
     int numCols = 2; 

     //Create a GridLayout manager with 
     //four rows and one column 
     setLayout(new GridLayout(((myTests.size()/numCols) + 1), numCols)); 

     //Add a border around the panel 
     setBorder(BorderFactory.createTitledBorder(title2)); 
     for(JButton jcb2 : myTests) 
     { 
      this.add(jcb2); 
     } 

    } 

    private ArrayList<JButton> createTestList(String[] testList) 
    { 
     String[] tests = testList; 
     ArrayList<JButton> myTestList = new ArrayList<JButton>(); 
     for(String t : tests) 
     { 
      myTestList.add(new JButton(t)); 
     } 
     for(JButton jcb2 : myTestList) 
     { 
      jcb2.addItemListener(this); 
     } 
     return myTestList; 
    } 

    @Override 
    public void itemStateChanged(ItemEvent ie) 
    { 
     if(((JButton)ie.getSource()).isSelected()) 
     { 
      selectedTests.add((JButton) ie.getSource()); 
     } 

    } 



    public ArrayList<JButton> getSelectedTests() 
    { 
     return selectedTests; 
    } 

私にはわからないものを生成するためにactionListnerまたはonClickListenerを作成する方法ですボタンをクリックします。

洞察力と助けに感謝します。

ありがとうございます! ironmantis7x

答えて

2

はまあ最も簡単な方法は、内部のプライベートクラスを作成することです。

private class MyTestListener implements ActionListener { 

    public void actionPerformed(ActionEvent e) { 
    // stuff that should happen 
    } 
} 


private class SelectedTestListener implements ActionListener { 

    public void actionPerformed(ActionEvent e) { 
    // stuff that should happen 
    } 
} 

プライベートクラスは、(あなたがあなたのArrayListで動作)同じJavaファイルにする必要があります。 クラスを作成したら、Listenerアクションを追加するだけです。

MyTestListener handler = new MyTestListener(); 

//Inside the for-each 
button.addActionListener(myListener); 

だけ(ある1つのボタンタイプのため、itemStateListenerのように)1リスナーが必要な場合は、単にフィッティング名で1つのプライベートクラスを定義して、.addActionListener上記の機能をforeachの中のボタンに追加します

楽しい一日を過ごす