java - 创建 Java Swing - JFrame、JRadioButton、JCheckBox

标签 java swing

我是 java swing 的新手。我已经在下面粘贴了我的代码供您引用,

我正在尝试在 JFrame 中创建 2 个 JRadioButtons,如果我点击那个 JRadioButton 它 应该为同一 JFrame 中的每个 JRadioButton 显示 5 个 JCheckboxes

JRadiobutton 现在正在显示,但是如果我单击那个 JRadioButton "JCheckboxes" 则不会 显示。请在下面查看我的代码,如果我的代码需要任何更改,请执行 因此,我正在为此奋斗。

MultipleFramesExample.javaMainview.java 类中调用 createMainView()

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

 }
}

是否可以像这样创建它们?

最佳答案

更新:这是一个工作示例:

Button 1 Button 2

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. 只要单击按钮,您就会创建新的 JCheckBoxes。如果用户点击它两次,则会创建更多复选框。
  2. 您尝试添加两个复选框:
    frame1.add(new JCheckBox("JIL"));
    frame1.getContentPane().add(jb);

尝试以下步骤:

  1. 创建并添加测试所需的所有对象(JRadioButtonJCheckBox)并确保它们都显示(如果您检查 Using Layout ManagersA Visual Guide to Layout Managers两者都添加但看不到两者)。

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

关于java - 创建 Java Swing - JFrame、JRadioButton、JCheckBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3271567/

相关文章:

java - 关于Java中ArrayDeque的实现

java.awt.Robot : how to send mouse/keyboard events to a specific window? 具有跨平台支持吗?

java - 带有 Tess4j 的 Tesseract 3.0 使 Linux 服务器上的应用程序崩溃

java - 重新初始化组件时,我的事件监听器停止工作

java - 向 JChart2D 的 ChartPanel 添加弹出菜单项

java - 从表单调用另一个类后返回表单

java - 如何在 Swing 中全局设置应用程序的图标?

java - Java 11 中的 JFoenix

java - `System.currentTimeMillis()`在多个进程中是否正确?

java - 如何使不确定的进度条看起来不错?