【问题标题】:Java BorderLayout not workingJava 边框布局不起作用
【发布时间】:2023-03-22 20:40:01
【问题描述】:

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

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) 完全定义“不起作用”的含义。你期待看到什么?你实际上看到了什么? 2)请尝试格式化您的代码,使其符合标准并且更容易被我们理解。代码块的缩进不是你应该随意做的事情,而是每个块应该有 4 个空格并且不应该改变。
  • 还有这个; @SuppressWarnings("deprecation") 是一个永远不应该使用的注解。
  • f.add("Center", ex); 使用f.add(ex, BorderLayout.CENTER) 可能会更好。我也可能是一个更好的主意,不要使用 15 年前被取代的 API……只是说……
  • @DJRIFFLE p 使用的是FlowLayout,而不是BorderLayout...
  • 您还混合了 Swing 和 AWT 组件,这将导致您在不兼容的情况下陷入痛苦的滑坡,因为组件会在谁应该在上面绘制时相互争斗......

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


【解决方案1】:
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 了解更多详情

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    相关资源
    最近更新 更多