在show jframe上隐藏单选按钮

时间:2015-11-07 09:51:12

标签: java swing netbeans jradiobutton

我正在使用netbeans 8.我有2个单选按钮,我想在显示框架时隐藏它。我怎样才能做到这一点?当我点击其他按钮时,我成功地做到了这一点:

private void jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                              
    // TODO add your handling code here:
    jRadioButton3.setVisible(false);
    jRadioButton4.setVisible(false);

}      

但那不是我想要的。我想将它设置为不可见,只在我点击其他单选按钮时显示它。出于某种原因,netbean阻止我编辑源代码中的某些区域,因此我无法测试或探索它。请提前帮助和谢谢。

2 个答案:

答案 0 :(得分:2)

默认情况下,将JRadioButton setVisible方法设置为false,然后在执行操作时将其更改。

例如,在此处,选择第一个JRadioButtons后,JRadioButton将会显示。如果取消选择,它们就会消失。

我用JRadioButton做了,但当然可以用其他组件来完成。

解决方案

public class Test extends JFrame{

    private JRadioButton but1, but2, but3;

    public Test(){
        setSize(new Dimension(200,200));
        initComp();
        setVisible(true);
    }

    private void initComp() {
        but1 = new JRadioButton();
        but1.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                but2.setVisible(but1.isSelected());
                but3.setVisible(but1.isSelected());
            }
        });

        but2 = new JRadioButton();
        but2.setVisible(false);

        but3 = new JRadioButton();
        but3.setVisible(false);
        setLayout(new FlowLayout());

        JPanel pan = new JPanel();
        pan.add(but1);
        pan.add(but2);
        pan.add(but3);

        getContentPane().add(pan);
    }

    public static void main(String[] args) {
        new Test();
    }
}

答案 1 :(得分:2)

将单选按钮添加到框架并在某些事件中显示时,可以将单选按钮设置为不可见:

public class InvisibleRadioButton {

public static void main(String[] args) {
    JFrame frame = new JFrame();
    final JRadioButton jRadioButton1 = new JRadioButton("1");
    JRadioButton jRadioButton2 = new JRadioButton("2");
    frame.setLayout(new FlowLayout());
    frame.add(jRadioButton1);
    frame.add(jRadioButton2);
    frame.setVisible(true);
    jRadioButton1.setVisible(false); // initialize as invisible

    jRadioButton2.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            jRadioButton1.setVisible(true); // set it to be visible
        }
    });
    frame.pack();
}
}