当前位置: 首页 > 面试题库 >

在Java Swing中取消选择单选按钮

司徒河
2023-03-14
问题内容

当显示一组JRadioButton时,最初不会选择任何一个(除非您以编程方式强制执行此操作)。我希望即使在用户已经选择一个按钮之后,也可以将按钮放回该状态,即,不应选择任何按钮。

但是,使用通常的嫌疑人并不能达到预期的效果:在每个按钮上调用’setSelected(false)’不起作用。有趣的是,当按钮没有放入ButtonGroup时,它
确实可以 工作-不幸的是,对于JRadioButton来说,后者是互斥的。

另外,使用setSelected(ButtonModel,boolean)-javax.swing.ButtonGroup的方法不能满足我的要求。

我编写了一个小程序来演示效果:两个单选按钮和一个JButton。单击JButton应该取消选择单选按钮,以使窗口看起来与第一次弹出时完全相同。

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;

/**
 * This class creates two radio buttons and a JButton. Initially, none
 * of the radio buttons is selected. Clicking on the JButton should
 * always return the radio buttons into that initial state, i.e.,
 * should disable both radio buttons.
 */
public class RadioTest implements ActionListener {
    /* create two radio buttons and a group */
    private JRadioButton button1 = new JRadioButton("button1");
    private JRadioButton button2 = new JRadioButton("button2");
    private ButtonGroup group = new ButtonGroup();

    /* clicking this button should unselect both button1 and button2 */
    private JButton unselectRadio = new JButton("Unselect radio buttons.");

    /* In the constructor, set up the group and event listening */
    public RadioTest() {
        /* put the radio buttons in a group so they become mutually
         * exclusive -- without this, unselecting actually works! */
        group.add(button1);
        group.add(button2);

        /* listen to clicks on 'unselectRadio' button */
        unselectRadio.addActionListener(this);
    }

    /* called when 'unselectRadio' is clicked */
    public void actionPerformed(ActionEvent e) {
        /* variant1: disable both buttons directly.
         * ...doesn't work */
        button1.setSelected(false);
        button2.setSelected(false);

        /* variant2: disable the selection via the button group.
         * ...doesn't work either */
        group.setSelected(group.getSelection(), false);
    }

    /* Test: create a JFrame which displays the two radio buttons and
     * the unselect-button */
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        RadioTest test = new RadioTest();

        Container contentPane = frame.getContentPane();
        contentPane.setLayout(new GridLayout(3,1));
        contentPane.add(test.button1);
        contentPane.add(test.button2);
        contentPane.add(test.unselectRadio);

        frame.setSize(400, 400);
        frame.setVisible(true);
    }
}

有任何想法吗?谢谢!


问题答案:

你可以做的buttonGroup.clearSelection()

但是此方法仅自Java 6起可用。



 类似资料:
  • 问题内容: 在使用jQuery提交AJAX表单后,我想取消选中单选按钮。我有以下功能: 借助此功能,我可以清除文本框中的值,但不能清除单选按钮的值。 顺便说一句,我也尝试过,但是那没用。 问题答案: 要么(普通js) 或(jQuery)

  • 我是Selenium IDE的新手,在这里需要选择单选按钮的帮助。就我而言,我正在尝试为由单选按钮组成的特定表单生成一个测试用例。当我运行命令以单独选择其中一个单选按钮时,该函数可以工作,但如果我运行整个测试用例,则单选按钮不会被选中并给出找不到Element Id的错误。这是我的html: 我的IDE命令:单击Target: id=ProjectSolutionsProject0。我尝试了ver

  • 问题内容: 我正在尝试从3个按钮的列表中进行选择,但是找不到选择它们的方法。以下是我正在使用的HTML。 我可以使用以下代码找到它: 输出:SRF,COM,MOT 但我想选择ChoiceOne。(单击它)我该怎么做? 问题答案: 使用CSS选择器或XPath 直接按属性选择,然后单击它。 更正(但是OP应该学习如何在文档中查找) 在Python绑定中,它不存在,称为。一个人应该能够查看异常消息并在

  • 此输出:SRF、COM、MOT 但我想选一个。(点击它)我怎么做?

  • 问题内容: 我正在尝试编写一个项目。在我的项目中,我可以成功拖动图像。 这是图片,这是我的ViewOnTouchListener代码: 请看图片 ,这是我的DragView代码: 一切都好。但是我需要做的是,当用户单击图像(贴纸)时,阴影和边框消失。当用户再次单击图像时,它们会再次出现。我不知道该怎么办。 问题答案: 最后,我找到了正确的答案。我认为这可能会有所帮助。所以我分享。首先,我在Drag

  • 问题内容: 当我单击他的图像时,我想选择单选按钮,但是它不起作用。这是我尝试过的: 我的两个属性都具有相同的 data =“” 属性:对于图像和输入,单击图像时,是否有任何方法可以检查输入(该收音机)? 谢谢 更新: 我发现一些代码有效,但是仅在图像上单击了三下,因此当单击最后一个脚本时,脚本停止了,无法再次选择第一个或第二个,我不知道为什么…我认为必须取消选中所有单选按钮,然后选中选中的一个按钮