我是swing java的新手,我做了一系列的切换按钮,我的问题是我想限制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();}
}发布于 2013-10-28 23:15:52
有什么属性允许我这样做吗?
不是的。这里有一个允许“”的ButtonGroup。但那是1, N of many。除此之外,您还需要自己编写代码。
发布于 2013-10-28 23:17:43
有什么属性允许我这样做吗?
不,你需要写你自己的代码。
为每个切换按钮添加一个通用的ItemListener。然后,当选择一个按钮时,循环遍历切换按钮数组以计算选择的切换按钮的数量。
如果计数大于4,则显示带有错误消息的JOptionPane,并将最后选择的按钮重置为取消选择。您可以使用ItemListener的getSource()方法来获取切换按钮。
或者,您可以扩展ButtonGroup类以实现类似的行为。
https://stackoverflow.com/questions/19638422
复制相似问题