【发布时间】:2011-06-17 09:42:54
【问题描述】:
我想在 Java 小程序中将 GroupLayout 的内容居中。经过长时间的研究,我仍然无法弄清楚如何去做。
下面的代码显示了我的小程序。所有元素都以布局为中心,但布局不以小程序为中心。
JPanel cp=new JPanel();
String[] s = new String[2];
s[0] = "Price";
s[1] = "Name";
JComboBox c = new JComboBox(s);
JProgressBar pb=new JProgressBar(17, 23);
pb.setValue(20);
pb.setStringPainted(true);
JLabel l=new JLabel("Name of product");
JButton b=new JButton("Send a message");
b.setEnabled(true);
cp.add(c);
cp.add(pb);
cp.add(l);
cp.add(b);
GroupLayout layout = new GroupLayout(cp);
cp.setLayout(layout);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
layout.setHorizontalGroup(
layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)
.addComponent(c,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE)
.addComponent(pb,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE)
.addComponent(l,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE)
.addComponent(b,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE))
);
layout.setVerticalGroup(
layout.createSequentialGroup()
.addComponent(c,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE)
.addComponent(pb,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE)
.addComponent(l,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE)
.addComponent(b,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE,
GroupLayout.PREFERRED_SIZE)
);
我会给予任何帮助。
【问题讨论】:
-
取决于您添加 GroupLayout JPanel cp 的组件。请显示相关代码。 JPanel 的容器也需要一个布局管理器。
-
这就是我所有的代码。我只忘了最后一行:add(cp)
-
这不是你的全部代码。我想你在一个扩展 JFrame 的类中,对吧?
-
1) 为了尽快获得更好的帮助,请发帖 SSCCE。 2)小程序本质上比框架更棘手。 3) 使
GroupLayout居中在applet 中的方法与您在框架中执行的方法完全相同。 4) 鉴于 (2) 并且你不理解 (3),我怀疑你在这个项目中咬得比你能咀嚼的更多。 -
@firstNamer:如果您发布一个简短的可编译程序(SSCCE)来演示您的问题,您可能会更快地获得更好的帮助。为什么只需要使用 GroupLayout 呢?为什么不使用更易于使用的布局组合?
标签: java swing applet grouplayout