Создание Java Swing - JFrame, JRadioButton, JCheckBox - PullRequest
1 голос
/ 17 июля 2010

Я новичок в java swing.Я вставил мой код ниже для вашей справки:

Я пытаюсь создать 2 JRadioButtons в JFrame, и если я нажму на это JRadioButton, он должен отобразить 5 JCheckboxes для каждого JRadioButton вто же самое JFrame.

JRadiobutton отображается сейчас, но если я нажму, то JRadioButton "JCheckboxes" не будет отображаться.Пожалуйста, смотрите мой код ниже, если какие-либо изменения в моем коде, пожалуйста, сделайте соответственно. Я борюсь за это.

MultipleFramesExample.java вызов createMainView() в Mainview.java классе

public class MultipleFramesExample extends JFrame {

 public  void fun()
 {

  MainView MV = new MainView();
  MV.createMainView();
 }

 public static void main(String[] args) {
   MultipleFramesExample ob=new MultipleFramesExample();
   ob.fun();
 }
}

Mainview.java создает Jframe и Buttons и т. Д.

    public class MainView extends JFrame implements ActionListener  {

     JFrame frame1;
     MainView mV=null;
     JCheckBox chinButton;
     JRadioButton birdButton;
    MultipleFramesExample ob=new MultipleFramesExample();
  JPanel panel = new JPanel(new BorderLayout());

  public void createMainView() {
  mV = new MainView();

  frame1 = new JFrame();
  frame1.setTitle("Main View");
  frame1.setSize(50,50);
  frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame1.setVisible(true);
   birdButton = new JRadioButton("click");
  frame1.getContentPane().add(birdButton);
  birdButton.addActionListener(this);

 }

  public void actionPerformed(ActionEvent event) {
    Container contentPane = frame1.getContentPane();
   contentPane.setLayout(new FlowLayout());

    JCheckBox jb=new JCheckBox();
    if (event.getActionCommand().equals(birdButton)) {

   frame1.add(new JCheckBox("JIL1"));
   frame1.add(new JCheckBox("JIL2"));
   frame1.add(new JCheckBox("JIL3"));
   frame1.add(new JCheckBox("JIL4"));
   frame1.add(new JCheckBox("JIL5"));
   frame1.setVisible(true);

   //panel.add(jb, BorderLayout.PAGE_START);

  // panel.getComponentCount();
     }
   }
 public void fun1(){

 }
}

Можно ли их так создать?

1 Ответ

7 голосов
/ 17 июля 2010

Обновление: Вот рабочий пример:

Кнопка 1 http://img709.imageshack.us/img709/1640/radiobutton1.png Кнопка 2 http://img822.imageshack.us/img822/5313/radiobutton2.png

public class MainView extends JFrame implements ActionListener{
    JRadioButton radioButton1 = new JRadioButton("Button 1");
    JRadioButton radioButton2 = new JRadioButton("Button 2");
    JCheckBox checkBox = new JCheckBox("CheckBox");
    ButtonGroup buttonGroup = new ButtonGroup();

    public MainView() {
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setSize(300, 100);
        setLayout(new GridLayout());

        buttonGroup.add(radioButton1);
        buttonGroup.add(radioButton2);
        radioButton1.addActionListener(this);
        radioButton2.addActionListener(this);
        radioButton2.setSelected(true);  // remove to have no button selected

        // ActionListener for CheckBox
        checkBox.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO: Your action here
            }
        });

        getContentPane().add(radioButton1);
        getContentPane().add(radioButton2);
        getContentPane().add(checkBox);
        setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        checkBox.setVisible(radioButton2.isSelected());
    }

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

Оригинальный пост

У вас проблемы с кодом:

  1. Вы создаете новые JCheckBox каждый раз, когда нажимаете кнопку. Если пользователь щелкнет его дважды, будет создано больше флажков.
  2. Вы пытаетесь добавить два флажка:
    frame1.add(new JCheckBox("JIL"));
    frame1.getContentPane().add(jb);

Попробуйте выполнить следующие действия:

  1. Создайте и добавьте все объекты, которые вам нужны для тестирования (JRadioButton, JCheckBox), и убедитесь, что они оба отображаются (отметьте Использование менеджеров макетов и A Visual Руководство для менеджеров по макету , если вы добавляете оба, но не видите оба).

  2. В вашем ActionListener используйте что-то вроде checkBox.setVisible(radioButton.isSelected()), чтобы переключать видимость вашего чекбокса в соответствии с состоянием вашей кнопки радио.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...