Динамическое удаление текстового поля из JFrame

#java #spring #jframe

#java #spring #jframe

Вопрос:

Я хочу удалить текстовое поле после выбора переключателя «не показывать поле», но не могу этого сделать. Я использовал методы repaint и revalidate. Я также пытался сделать поле невидимым, установив для видимости значение false, но, похоже, ничего не работает.

 import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Main {
public static void main(String[] args) {
    new Frame();
}
}

class Frame 
{
private JFrame frame;
private JButton button;
private ImageIcon img;
private JRadioButton b1;
private JRadioButton b2;
private JTextField text;
public Frame()
{
    frame = new JFrame();
    text=new JTextField(10);
    b1=new JRadioButton("show Field");
    b2=new JRadioButton("Dont show field");
    ButtonGroup bg = new ButtonGroup();
    bg.add(b1);
    bg.add(b2);
    img = new ImageIcon("Letter-S-icon.png");

    b1.addActionListener(new ActionListener()
            {
                @Override
                public void actionPerformed(ActionEvent arg) {
                    if(arg.getSource()==b1)
                    {
                        frame.add(text);
                        frame.revalidate();
                        frame.repaint();
                    }
                    else if(arg.getSource()==b2)
                    {
                        text.setVisible(false);
                        frame.remove(text);//cannot remove this even after repaint(); 
                        frame.revalidate();
                        frame.repaint();
                    }
                }
            });
    frame.add(b1);
    frame.add(b2);
    frame.setLayout(new FlowLayout());
    frame.setVisible(true);
    frame.setBounds(500, 200, 200, 200);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    frame.setIconImage(img.getImage());

 }
 }
  

Комментарии:

1. Вы только слушаете действия b1 . Ничего не произойдет, если вы выберете b2

2. но это все равно может сработать, если вы добавите ItemListener к radiobutton b1

3. большое спасибо @XtremeBaumer, это сработало.