如何使两个复选框在 Swing 中并排放置?

How to make two checkboxes sit next to each other in Swing?

我有两个 JCheckBox 和一个 JEditorPane。我正在寻找 under

的输出

但是我目前的代码有点乱,我无法做到

private void createContents()
  {    
    JEditorPane  license;
    JCheckBox confirmBox;
    JCheckBox declineBox;   

    license = new JEditorPane("text/html", "");
    license.setText (buildEulaText());
    license.setEditable(false);   
    confirmBox = new JCheckBox("I accept.", false); 
    declineBox = new JCheckBox("I decline.", false); 
    add(license, BorderLayout.CENTER);
    add(confirmBox, BorderLayout.SOUTH); 
    add(declineBox, BorderLayout.NORTH);   //I know this is wrong 
  } 

一个简单的解决方案是使用新的 JPanelFlowLayout 组合布局。

add(license, BorderLayout.CENTER);
JPanel boxes = new JPanel(new FlowLayout());
// FlowLayout is the JPanel default layout manager, so
// boxes = new JPanel(); works too :)
boxes.add(confirmBox);
boxes.add(declineBox);
add(boxes, BorderLayout.SOUTH);

不过你也可以看看 GridBagLayout.

创建一个新的 JPanel 来保存所有复选框,然后将其添加到您的 panel/frame。

JPanel checkBoxesPane = new Panel();

checkBoxesPane.add( confirmBox );
checkBoxesPane.add( declineBox );

add( checkBoxes, BorderLayout.SOUTH );

首先,我强烈建议在 javafx 中执行此操作,而不是在 Java swing 中执行。是后来的技术,我觉得好多了。

如果你还想在 Java swing 中做,这里是代码:

JPanel panel = new Panel();
panel.add(confirmBox);
panel.add(declineBox);
add(panel, BorderLayout.SOUTH);

我没有测试代码,但它应该适用于此代码。