Скрыть переключатель на шоу jframe

Я использую netbeans 8. У меня есть 2 переключателя, которые я хочу скрыть, когда отображается кадр. Как я могу это сделать? Я успешно делаю это, когда нажимаю другую кнопку, например эту:

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

}      

но это не то, что я хочу. Я хочу сделать его невидимым и показывать его только тогда, когда я нажимаю другой переключатель. По какой-то причине netbean не позволяет мне редактировать определенную область в моем исходном коде, поэтому я не могу ее протестировать или изучить. Пожалуйста, помогите и спасибо заранее.


person sg552    schedule 07.11.2015    source источник
comment
Не могли бы Вы уточнить?   -  person Yassin Hajaj    schedule 07.11.2015
comment
@YassinHajaj - я хочу сделать переключатель невидимым по умолчанию. Это означает, что когда фрейм открыт, 2 радиокнопки не видны.   -  person sg552    schedule 07.11.2015


Ответы (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();
    }
}
person Yassin Hajaj    schedule 07.11.2015
comment
Netbean позволил мне редактировать public NewJFrame() { initComponents(); }, поэтому я добавил туда jRadioButton3.setVisible(false); jRadioButton4.setVisible(false);. Спасибо - person sg552; 07.11.2015

Вы можете сделать радиокнопку невидимой, когда добавляете ее в фрейм и делаете ее видимой при каком-то событии:

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();
}
}
person Bon    schedule 07.11.2015