很容易创建一个按钮或按钮组,
Root root = iface.createRoot(AxisLayout.vertical(), ROOT, modeLayer).
setStyles(make(VALIGN.top, HALIGN.right)).
setBounds(0, 0, width, height).
add(backButton);然而,我不知道如何在不同的组中创建两个按钮,即左上角的一个按钮和右上角的按钮.
我尝试创建了两个根,其中一个按钮将被禁用/不可点击。如果我打了一个根,他们就会聚在一起:(
============感谢samskivert给出了详细的答案,但我无法给出正确的结果。对于“orginal”回答中的第一个建议,完整代码如下:
Font SMALL = PlayN.graphics().createFont("Helvetica", Font.Style.PLAIN, 24);
final Stylesheet ROOT = SimpleStyles.newSheetBuilder().
add(Element.class, make(FONT.is(SMALL))).
add(Button.class, make(BACKGROUND.is(Background.solid(100)))).create();
Group group = new Group(AxisLayout.vertical()).add(
new Group(AxisLayout.horizontal(), Style.HALIGN.left).add(
new Button("Upper left")),
AxisLayout.stretch(new Shim(1, 1)),
new Group(AxisLayout.horizontal(), Style.HALIGN.right).add(
new Button("Lower right")));
iface.createRoot(AxisLayout.vertical(), ROOT, modeLayer)
.setBounds(0, 0, 960, 640)
.add(group);它产生这个屏幕(也就是说,它都是居中的,而不是左上角/下向下.)

对于第二个,完整代码如下:字体小= PlayN.graphics().createFont("Helvetica",Font.Style.PLAIN,24);
final Stylesheet ROOT = SimpleStyles.newSheetBuilder().
add(Element.class, make(FONT.is(SMALL))).
add(Button.class, make(BACKGROUND.is(Background.solid(100)))).create();
Group group = new Group(new BorderLayout()).add(
new Group(AxisLayout.horizontal(), Style.HALIGN.left).
setConstraint(BorderLayout.NORTH).add(
new Button("Upper left")),
new Group(AxisLayout.vertical(), Style.HALIGN.right).
setConstraint(BorderLayout.SOUTH).add(
new Button("Lower right")));
iface.createRoot(AxisLayout.vertical(), ROOT, modeLayer)
.setBounds(0, 0, 960, 640)
.add(group);它产生了这个截图(即,它的中心和重叠.)

再次感谢。
发布于 2012-05-26 19:49:10
编辑:哎呀,现在我看到你想要左上角和右上角,而不是左上角和右下角.您想要的配置甚至更简单。只要在按钮之间插入一个伸长的垫片:
iface.createRoot(AxisLayout.vertical().offStretch(), ROOT, modeLayer).
setBounds(0, 0, width, height).
add(new Group(AxisLayout.horizontal()).add(
new Button("Upper-left"),
AxisLayout.stretch(new Shim(1, 1)),
new Button("Upper-right")));原来的答案:
AxisLayout将其所有元素放置在一条(水平或垂直)线中。它们都必须是相邻的,两者之间有一个可配置的差距。如果希望使用AxisLayout完成所需的布局,则需要使用以下嵌套组:
+---------------------------------------+
|+-------------------------------------+|
|| [Button] left-aligned AxisLayout ||
|+-------------------------------------+|
| |
| [stretched shim widget] | <-- vertical AxisLayout
| |
|+-------------------------------------+|
|| right-aligned AxisLayout [Button] ||
|+-------------------------------------+|
+---------------------------------------+在代码中,这看起来是:
Group group = new Group(AxisLayout.vertical()).add(
new Group(AxisLayout.horizontal(), Style.HALIGN.left).add(
new Button("Upper left")),
AxisLayout.stretch(new Shim(1, 1)),
new Group(AxisLayout.horizontal(), Style.HALIGN.right).add(
new Button("Lower right")));您还可以使用BorderLayout来避免中间的垫片:
Group group = new Group(new BorderLayout()).add(
new Group(AxisLayout().horizontal(), Style.HALIGN.left).
setConstraint(BorderLayout.NORTH).add(
new Button("Upper left")),
new Group(AxisLayout.vertical(), Style.HALIGN.right).
setConstraint(BorderLayout.SOUTH).add(
new Button("Lower right")));https://stackoverflow.com/questions/10763977
复制相似问题