创建Java Swing - JFrame,JRadioButton,JCheckBox

Man*_*anu 1 java swing

我是java swing的新手.我已粘贴下面的代码供您参考,

我正在尝试创建2 JRadioButtonsin JFrame并且如果我点击JRadioButton它应该JCheckboxes在每个JRadioButton中显示5 JFrame.

JRadiobutton正在显示,但如果我点击JRadioButton "JCheckboxes"不显示.请参阅下面的代码,如果我的代码中有任何更改,请相应地做.我正在为此努力.

MultipleFramesExample.javacreateMainView()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();
 }
}
Run Code Online (Sandbox Code Playgroud)

Mainview.java创建JframeButtons等.

    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(){

 }
}
Run Code Online (Sandbox Code Playgroud)

有可能像这样创建它们吗?

Pet*_*ang 7

更新:这是一个有效的例子:

按钮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();
    }
}
Run Code Online (Sandbox Code Playgroud)

原帖

您的代码有些问题:

  1. JCheckBox只要单击按钮,就可以创建新的es.如果用户单击两次,则会创建更多复选框.
  2. 您尝试添加两个复选框:
    frame1.add(new JCheckBox("JIL"));
    frame1.getContentPane().add(jb);

请尝试以下步骤:

  1. 创建并添加测试所需的所有对象(JRadioButton,JCheckBox)并确保它们都显示(如果添加两者,请选中" 使用布局管理器布局管理器的可视指南",但不要同时看到它们).

  2. 在你的ActionListener,使用类似的东西checkBox.setVisible(radioButton.isSelected()),根据你的radioButton状态切换checkBox的可见性.