如何在Swing中使两个复选框相邻而坐?

问题描述 投票:1回答:3

我有两个JCheckBox和一个JEditorPane。我正在寻找一个如下的输出

enter image description here

但我现在的代码有些乱,为此我无法做到

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 
  } 
java swing layout layout-manager jcheckbox
3个回答
2
投票

一个简单的解决方法是使用一个新的JCheckBox和一个JEditorPane组成布局。JPanel 附带 FlowLayout.

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.


1
投票

创建一个新的JPanel来容纳所有的复选框,然后将其添加到你的面板框架中。

JPanel checkBoxesPane = new Panel();

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

add( checkBoxes, BorderLayout.SOUTH );

1
投票

首先我强烈建议用javafx而不是Java swing来做。根据我的观点,它是后来的技术,而且更好。

如果你还想用Java swing来做,这里有代码。

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

我没有测试这段代码,但它应该可以用这段代码工作。

© www.soinside.com 2019 - 2024. All rights reserved.