2013-10-28 2 views
0

저는 스윙 자바에 대해 새로운 것입니다. jtoggle 버튼 배열을 보았습니다. 문제는 4 개의 토글 버튼에 대해 선택된 (토글 된) 버튼 수를 제한하려고한다는 것입니다. 내가 할 수있는 물건이 있습니까? 다음은 제 코드 예제입니다.선택한 JToggleButton의 수를 제한하십시오

package adad; 

import java.awt.*; import java.awt.event.*; 
import javax.swing.*; 
public class essayer extends JFrame 
{ 
private JToggleButton jb_essai[] = new JToggleButton[6]; 

JButton pressme = new JButton("Press Me"); 
essayer()  // the frame constructor 
{ 
super("Toggle boutons"); 
setBounds(100,100,300,200); 
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
Container con = this.getContentPane(); 
JPanel pane = getContainer(); 
con.add(pane);  
setVisible(true); 
} 

class ToggleAction implements ActionListener 
{ 
private JToggleButton jb_essai[]; 
public ToggleAction(JToggleButton a_jb_essai[]) 
{ 
    jb_essai = a_jb_essai; 
} 

public void actionPerformed(ActionEvent e) 
{ 
    String etatBoutons = ""; 
    int size = jb_essai.length; 

    for(int i=0;i<size;i++) 

    { 
    String tmp = "Bouton "+(i+1)+" : "; 
    if(jb_essai[i].isSelected()==true ) 
    { 
     tmp+="enfonce"; 
    } 
    else 
    { 
     tmp+="relache"; 
    } 
    tmp+="\n"; 
    etatBoutons +=tmp; 
    } 
    System.out.println(etatBoutons+"\n---------"); 
    } 

    } 
private JPanel getContainer() 
{ 

GridLayout thisLayout = new GridLayout(6,2); 
JPanel container = new JPanel(); 
ToggleAction tga = new ToggleAction(jb_essai); 
container.setLayout(thisLayout); 
int j=6; 
for (int i=0;i<j;i++) 
{ 
    String s = String.valueOf(i+1); 

    container.add(jb_essai[i]= new JToggleButton(s)); // actuellement tt s'affiche sur un même colone. 
    jb_essai[i].addActionListener(tga); 

} 
return container; 
} 

public static void main(String[] args) {new essayer();} 
    } 
+1

코드 블록에 일관되고 논리적 인 들여 쓰기를 사용하십시오. 코드의 들여 쓰기는 사람들이 프로그램 흐름을 이해하도록 돕기위한 것입니다. –

답변

1

내가 그렇게 할 수있는 재산이 있습니까?

번호가 '중 하나'할 수있는 ButtonGroup이다. 그러나 그것은 1,이 아니라 N 많은 것입니다. 그 이상으로 코드를 작성해야합니다.

1

나를 그렇게 할 수있는 속성이 있습니까?

아니요, 자신 만의 코드를 작성해야합니다.

모든 토글 버튼에 공통 ItemListener를 추가합니다. 그런 다음 버튼이 선택되면 토글 버튼 배열을 반복하여 선택한 토글 버튼 수를 계산합니다.

수가 4보다 큰 경우 오류 메시지가있는 JOptionPane을 표시하고 마지막으로 선택한 버튼을 선택 취소하도록 재설정합니다. ItemListener의 getSource() 메서드를 사용하여 토글 버튼을 가져올 수 있습니다.

또는 유사한 동작을 구현하기 위해 ButtonGroup 클래스를 확장 할 수 있습니다.

+0

나는 공통의 ItemListener를 추가하려고 노력할 것이다. 감사합니다 –

+0

ItemListener에 대한 getSource() 메소드가 없습니다. –

+0

오타를 유감스럽게 생각합니다. ItemListener는 다른 Swing 리스너와 같으며, 리스너의 이벤트 객체에는 필요한 정보가 들어 있습니다. 이 경우 ItemEvent. – camickr

관련 문제