【发布时间】:2011-05-07 08:19:36
【问题描述】:
我想要做的是在我的 BorderLayout 的中心放置一个 GridBagLayout 面板,并将 GridBagLayout 面板(/和上面的文本)垂直对齐到顶部(因为它会自动将它放在中间,水平和垂直)。
所以我基本上尝试过(但最终 GridBagLayout 的文本仍然在页面的中间,而不是在中间 x 和顶部 y):
import java.awt.*;
import java.applet.*;
import javax.swing.*;
import javax.imageio.*;
import javax.swing.BorderFactory;
import javax.swing.border.*;
import java.awt.event.*;
public class Test extends JApplet implements MouseListener, ActionListener {
public void init() {
//create borderlayout
this.setLayout(new BorderLayout());
//create a GridBagLayout panel
JPanel gb = new JPanel(new GridBagLayout());
JLabel content = new JLabel("Some text");
//set GridBagConstraints (gridx,gridy,fill,anchor)
setGBC(0, 0, GridBagConstraints.VERTICAL, GridBagConstraints.NORTH);
gb.add(content, gbc); //gbc is containing the GridBagConstraints
this.add(gb, BorderLayout.CENTER);
}
}
所以我尝试使用 gridbagconstraints 锚点将对齐方式设置为垂直于北上,但这似乎不起作用。我还尝试调整 GridBagLayout 面板本身的大小(使用 panel.setSize 和 setPreferredSize 使其具有布局的全高 100%),然后使用 gridbagconstraints.anchor 垂直对齐其上的元素,但这不起作用要么。
谁能帮我解决这个问题?
提前致谢,
最好的问候, Skyfe。
所以我的问题是
【问题讨论】:
-
我仍然不明白为什么这不是 SSCCE (pscode.org/sscce.html) 它很短,我只显示了与问题有关的代码,它是正确的,并且我用给定的语句说明了问题代码对我来说就像一个“SSCCE”
-
如果需要能够复制粘贴,就复制粘贴到基本applet代码的init方法或者普通java应用代码的main方法中即可。跨度>
标签: java swing alignment vertical-alignment gridbaglayout