Java BorderLayout无法正常工作

时间:2015-06-29 23:48:53

标签: java swing awt layout-manager border-layout

边框布局对我不起作用...我一直在使用教程并复制他们在我的代码上运行它时所做的事情它不起作用。如果你能指出我的错误并解释为什么这是一个错误,非常感谢! :) 我的代码如下:

public static JButton bb = new JButton("Continue");
public TextArea ta = new TextArea(30,140);
TextArea tb = new TextArea(3,140);
public int counter = 0;

//main class
public static void main(String[]args){      
    Frame f = new Frame("---Quest---");
    base ex = new base();
    ex.init();
    f.setResizable(false);
    f.add("Center", ex);
    f.pack();
    f.show(true);
    f.setSize(1100,800);
}
public void init() {        
    bb.addActionListener(this);
    Panel p;
    setLayout(new BorderLayout());
    p = new Panel();

    p.add(ta,BorderLayout.NORTH);
    p.add(tb, BorderLayout.CENTER);
    p.add(bb, BorderLayout.SOUTH);
    tb.setLocation(0,50);
    p.setBackground(Color.blue);
    ta.setBackground(Color.cyan);
    ta.setEditable(false); 
    add("Center", p);
}            

1 个答案:

答案 0 :(得分:2)

setLayout(new BorderLayout());
p = new Panel();

p.add(ta,BorderLayout.NORTH);
p.add(tb, BorderLayout.CENTER);
p.add(bb, BorderLayout.SOUTH);

在另一个容器上调用setLayout不会更改其他容器的布局管理器,这会很烦人。

Panel默认使用FlowLayout。相反,请尝试使用p = new Panel(new BorderLayout())

我还鼓励使用add(p, BorderLayout.CENTER);而不是add("Center", p);,可能会出错(例如拼写错误center

尝试并避免混合使用AWT和Swing组件,它们不能很好地协同工作,而是选择一个API并坚持使用它。作为一般性建议,如果不是JavaFX,我们建议至少使用Swing,因为他们拥有比AWT更好的社区支持。

有关详细信息,请查看Creating a GUI With JFC/SwingLaying Out Components Within a Container