我使用了borderLayout中心,但它只是相对于屏幕宽度而不是屏幕高度的组件居中。所以我使用了BorderLayout.CENTER_BEHAVIOR_CENTER。它将组件集中在表单的中间,但我有动画,它应该采用整个屏幕大小,但它只是采用组件大小。
菜单动画:
//f.setLayout(new FlowLayout(Component.CENTER, Component.CENTER));
f.setLayout(new BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER));
Container menuContainerGroup = new Container(new BoxLayout(BoxLayout.Y_AXIS));
f.add(menuContainerGroup);
TableLayout tl = new TableLayout(3, 3);
Container menuContainer = new Container(tl);
menuContainerGroup.add(menuContainer);
Image round = theme.getImage("loginBg.png").scaledWidth(imgWidth / 3 - 10);
Label menuIcon = new Label();
menuIcon.setUIID("menuButton");
Button menuIcon1 = new Button(round);
menuIcon1.setUIID("menuButton");
menuIcon1.addActionListener((e) -> {
menuAnimation(menuContainer);
menuContainer.animateUnlayoutAndWait(600, 20);
showForm("", null);
});
Label menuIcon2 = new Label();
menuIcon2.setUIID("menuButton");
Button menuIcon3 = new Button(round);
menuIcon3.setUIID("menuButton");
menuIcon3.addActionListener((e) -> {
menuAnimation(menuContainer);
menuContainer.animateUnlayoutAndWait(600, 20);
showForm("", null);
});
Button menuIcon4 = new Button("Sign Out");
menuIcon4.setUIID("menuButton");
menuIcon4.getAllStyles().setFgColor(0xff7800);
menuIcon4.getAllStyles().setAlignment(Component.CENTER);
menuIcon4.addActionListener((e) -> {
menuAnimation(menuContainer);
menuContainer.animateUnlayoutAndWait(600, 20);
showForm("", null);
});
Button menuIcon5 = new Button(round);
menuIcon5.setUIID("menuButton");
menuIcon5.addActionListener((e) -> {
menuAnimation(menuContainer);
menuContainer.animateUnlayoutAndWait(600, 20);
showForm("", null);
});
Label menuIcon6 = new Label();
menuIcon6.setUIID("menuButton");
Button menuIcon7 = new Button(round);
menuIcon7.setUIID("menuButton");
menuIcon7.addActionListener((e) -> {
menuAnimation(menuContainer);
menuContainer.animateUnlayoutAndWait(600, 20);
showForm("", null);
});
Label menuIcon8 = new Label();
menuIcon8.setUIID("menuButton");
menuContainer.add(tl.createConstraint().widthPercentage(33), menuIcon);
menuContainer.add(tl.createConstraint().widthPercentage(33), menuIcon1);
menuContainer.add(tl.createConstraint().widthPercentage(33), menuIcon2);
menuContainer.add(tl.createConstraint().widthPercentage(33), menuIcon3);
menuContainer.add(tl.createConstraint().widthPercentage(33), menuIcon4);
menuContainer.add(tl.createConstraint().widthPercentage(33), menuIcon5);
menuContainer.add(tl.createConstraint().widthPercentage(33), menuIcon6);
menuContainer.add(tl.createConstraint().widthPercentage(33), menuIcon7);
menuContainer.add(tl.createConstraint().widthPercentage(33), menuIcon8);
f.revalidate();
代码:
HttpConfiguration
答案 0 :(得分:0)
发生这种情况的原因是因为组件包含在边框布局位置内的Container中。因此,当您为其设置动画时,您将其渲染到其父容器的边界之外,该容器将其剪切到位。
一种可能的解决方案可能是在事后设置中心布局的约束,然后使用animateLayoutHierarchy
,它将设置约束效果和元素位置的动画。