当前位置: 首页 > 知识库问答 >
问题:

限制所选JToggleButton的数量

韩高峯
2023-03-14

我是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个答案

楮景明
2023-03-14

是否有任何财产允许我这样做?

不,您需要编写自己的代码。

为每个切换按钮添加一个通用的ItemListener。然后,当一个按钮被选中时,您可以通过切换按钮数组来计算所选切换按钮的数量。

如果计数大于4,则显示带有错误消息的JOptionPane,并将上次选中的按钮重置为取消选中。您可以使用ItemListener的getSource()方法来获取切换按钮。

或者,您可以扩展ButtonGroup类来实现类似的行为。

松铭
2023-03-14

是否有任何财产允许我这样做?

没有。有一个ButtonGroup允许许多中的一个。但那是1,不是N。除此之外,你需要自己编码。

 类似资料:
  • 问题内容: 我正在尝试以可靠,外观独立的方式更改a的颜色。 如果使用Metal L&F,则使用UIManager是一种方法: 注意 :Iyy指出我在上面的属性名称中有一个错字,但是我会留给上面的人输入,但实际的属性名称应该是: 但是,这在我当前的外观(当前为Windows XP)中不起作用。经过进一步分析,看来Windows(仍然是XP)中的系统外观根本没有使用任何基于-的属性,或者至少它本身不提

  • 我有一个将初始背景颜色设置为红色的按钮。我有一个在红色和深红色之间翻转的动作程序。基本上,如果选择按钮,它是红色的。没有选中,是暗红色。 代码运行,但是每当选择切换按钮时,它都是白色的。所以我在深红色和白色之间切换。 我所做的:我做了很多代码实验,但毫无进展。我做了很多网络搜索,但找不出一个有效的例子。 我正在使用Java11。我需要在代码中更改什么才能获得我想要的行为?

  • 我希望我的JToggleButton在被选中时不要重新绘制。我用一对字(“检查/下一步”)表示状态改变。标准行为是蓝色照明,但我想禁用它。

  • 问题内容: 我有4个复选框。我希望用户仅选择其中两个。如何设置该限制? 问题答案: 您可以轻松地使用一个变量来存储当前选中的复选框的数量…然后调用任何时间,检查该变量,如果它已经是要选中的第三个复选框,则只需将其设置为再次取消选中即可。 假设您首先取消选中所有复选框。所以你也是: 然后设置: (我尚未测试过代码,但应该可以。)

  • 主要内容:1 Java JToggleButton的介绍,2 Java JToggleButton的内部类,3 Java JToggleButton的构造方法,4 Java JToggleButton的方法,5 Java JToggleButton的案例1 Java JToggleButton的介绍 JToggleButton用于创建切换按钮,它是两种状态的按钮,用于打开或关闭。 2 Java JToggleButton的内部类 内部类 描述 protected class JToggleBut

  • 我正在制作一个BMR计算器,我的一个面板为用户提供了一个选项,可以改变他们输入身高的方式,从厘米到英尺/英寸。 下面是处理上述面板的代码块。 我的问题是,当我按下kg或cm按钮时,文本字段不会出现,因此我认为我使用的isSelected()有点错误。 下面是一幅关于这种情况的图像。您可以看到,即使选择了脚,也不会显示任何文本字段。我能做些什么来解决这个问题?