Ограничить количество выбранных JToggleButton
Я новичок в Swing Java, я создал массив кнопок jtoggle, и моя проблема в том, что я хочу ограничить количество выбранных (переключаемых) кнопок для 4 переключаемых кнопок. Есть ли свойство, которое позволяет мне это сделать? Вот мой пример кода.
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();}
}
2 ответа
Есть ли свойство, которое позволяет мне это сделать?
Нет, есть ButtonGroup
это позволяет "один из многих". Но это 1, а не N из многих. Все, что за этим нужно, вам нужно кодировать самостоятельно.
Есть ли свойство, которое позволяет мне это сделать?
Нет, вам нужно написать свой собственный код.
Добавьте общий ItemListener для каждой кнопки переключения. Затем, когда кнопка выбрана, вы выполняете цикл по массиву переключателей, чтобы подсчитать количество выбранных переключателей.
Если число больше 4, вы отображаете JOptionPane с сообщением об ошибке, и вы сбрасываете последнюю выбранную кнопку, которая не была выбрана. Вы можете использовать метод getSource() ItemListener, чтобы получить кнопку переключения.
Или, может быть, вы можете продлить ButtonGroup
класс для реализации аналогичного поведения.