我有一个具有垂直BoxLayout的JPanel,它位于具有空布局的JPanel之上。
我希望JPanel与BoxLayout增长,因为组件正在被添加。
public static void main (String[] args) {
JFrame f = new JFrame();
f.setSize(500,500);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel total = new JPanel();
total.setLayout(null);
total.setSize(f.getWidth(),f.getHeight());
total.setBackground(Color.green);
JPanel box = new JPanel();
box.setLocation(100,200);
box.setLayout(new BoxLayout(box, BoxLayout.Y_AXIS));
box.add(new JButton("test"));
box.add(new JLabel("hey"));
total.add(box);
f.add(total);
f.setVisible(true);
}
提前:我需要的“盒子”的位置正好在100,200,所以请不要建议我不使用空布局。我必须使用空布局。“total”的空布局不应该影响我的问题的答案,我的问题集中在“box”面板上。
通过扔掉布局管理器,您突然变得负责它的工作。我想补充一下,这不容易...
基本上,举个例子,您无法设置子组件的大小······
JFrame f = new JFrame();
f.setSize(500, 500);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel total = new JPanel();
total.setLayout(null);
total.setSize(f.getWidth(), f.getHeight());
total.setBackground(Color.green);
JPanel box = new JPanel();
box.setLocation(100, 200);
box.setLayout(new BoxLayout(box, BoxLayout.Y_AXIS));
box.add(new JButton("test"));
box.add(new JLabel("hey"));
box.setSize(100, 100); // <-- Don't forget this..
total.add(box);
f.add(total);
f.setVisible(true);
就我个人而言,我认为你在自找麻烦,但我知道...
JFrame f = new JFrame();
f.setSize(500, 500);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel total = new JPanel(new BorderLayout());
total.setSize(f.getWidth(), f.getHeight());
total.setBackground(Color.green);
total.setBorder(new EmptyBorder(100, 200, 100, 200));
JPanel box = new JPanel();
box.setLayout(new BoxLayout(box, BoxLayout.Y_AXIS));
box.add(new JButton("test"));
box.add(new JLabel("hey"));
total.add(box);
f.add(total);
f.setVisible(true);
JPanel total = new JPanel();
total.setLayout(new SuperAwesomeBetterThenYoursLayout());
public static class SuperAwesomeBetterThenYoursLayout implements LayoutManager {
@Override
public void addLayoutComponent(String name, Component comp) {
}
@Override
public void removeLayoutComponent(Component comp) {
}
@Override
public Dimension preferredLayoutSize(Container parent) {
return new Dimension(100, 300);
}
@Override
public Dimension minimumLayoutSize(Container parent) {
return new Dimension(100, 300);
}
@Override
public void layoutContainer(Container parent) {
boolean laidOut = false;
for (Component child : parent.getComponents()) {
if (child.isVisible() && !laidOut) {
child.setLocation(200, 100);
child.setSize(child.getPreferredSize());
} else {
child.setSize(0, 0);
}
}
}
}
这基本上代表了您无论如何都要做的工作,但它是以一种与Swing设计方式相一致的方式进行的...
问题内容: 所以我有一个叫做extends 的类。它使用空布局。我如何将其用作常规组件?当我将它放在另一个窗口中然后添加到窗口中时,它消失了。仅当我直接将其添加到窗口时,它才可见。 编辑:是的,我意识到使用带有null布局的A是不好的做法。实际上是别人的代码,我正在尝试将其用于我的目的,而不必重构它。 问题答案: 仅当我直接将其添加到窗口时,它才可见。 这是因为默认情况下,窗口使用BorderLa
问题内容: 我在XML中定义了以下布局: 如何使用LayoutInflater来获取ListView和ProgressBar并在代码中分配它? 问题答案: 通过这种方式:
我需要在中制作这样的表。 有什么想法如何做到这一点,以获得像下面图片上的布局吗?
我正在构建一个带有Swing的桌面应用程序,其功能与Twitter类似。我有一个“feed”页面,其中显示“tweets”。 我在JPanel中有“tweets”,希望通过在JPanel顶部放置新的“tweets”并向下移动旧的“tweets”来动态显示新的tweets。我试图通过使用jpanel来使用MigLayout实现这一点。添加(tweet,“cell 0,wrap”)然而,这并没有按预期
问题内容: 我是Android开发的新手,已经开始创建自己的UI。我看到您可以动态创建它,如下所示(Dynamic Layouts ): 但我也看到netbeans有一个文件 Resources- > layout-> main.xml 。因此,您可以为UI创建XML布局(声明XML布局): 所以我的问题是应该使用哪个?在Android开发中,对动态布局和XML布局有何建议和优缺点? 问题答案: