我有两个JCheckBox和一个JEditorPane。我正在寻找一个如下的输出
但我现在的代码有些乱,为此我无法做到
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
}
一个简单的解决方法是使用一个新的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
.
创建一个新的JPanel来容纳所有的复选框,然后将其添加到你的面板框架中。
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);
我没有测试这段代码,但它应该可以用这段代码工作。