向 BorderLayout 添加组件
Adding components to BorderLayout
我正在尝试在 IntelliJ 中实现 BorderLayout,但无法正常工作。它编译得很好,但是当它运行时,我看到查看器一秒钟,然后它崩溃了。我目前拥有的代码是
Button Next=new Button("Next");
Button Back=new Button("Back");
Container panel1=new Container();
Container panel2=new Container();
home = new Form("Home");
home.setLayout(new BorderLayout());
panel1.setLayout(new BorderLayout());
panel2.setLayout(new BorderLayout());
home.addComponent(BorderLayout.EAST,panel1);
home.addComponent(BorderLayout.WEST,panel2);
panel1.addComponent(Next);
panel2.addComponent(Back);
我在崩溃后得到的错误是"Cannot add component to BorderLayout Container without constraint parameter"。我尝试研究约束参数并在 IntelliJ 中使用 BorderLayout,但我发现的任何文本要么没有帮助,要么太复杂而难以理解。非常感谢!
错误消息告诉您,如果要将组件添加到边框布局,您必须指定放置它的位置。在将组件添加到 home 时,您已经这样做了,但是在将组件添加到 panel1
和 panel2
时,您还没有这样做。您需要添加 BorderLayout.EAST
(或 WEST
或其他)以获取:
panel1.addComponent(BorderLayout.EAST, Next);
panel2.addComponent(BorderLayout.WEST, Back);
但是,我认为你用错了。您可能不希望在 panel1 或 panel2 中使用边框布局——它们在默认流布局中没有问题,因此如果您删除 panel1/2.setLayout()
行,您的代码应该可以正常工作。
顺便说一句:在java中我们不在变量的开头使用大写字母,所以Next
和Back
应该是next
和back
.另外,panel1
应该类似于 nextPanel
,而 panel2
应该类似于 backPanel
。
再补充一件事 -- 没有人再使用 awt。我们都在继续前进(主要是 html5)。所以,在 swing 中尝试这个,你会得到:
import javax.swing.*;
...
JButton next = new JButton("Next");
JButton back = new JButton("Back");
JFrame home = new JFrame("Home");
home.setLayout(new BorderLayout());
home.add(back, BorderLayout.WEST);
home.add(next, BorderLayout.EAST);
我正在尝试在 IntelliJ 中实现 BorderLayout,但无法正常工作。它编译得很好,但是当它运行时,我看到查看器一秒钟,然后它崩溃了。我目前拥有的代码是
Button Next=new Button("Next");
Button Back=new Button("Back");
Container panel1=new Container();
Container panel2=new Container();
home = new Form("Home");
home.setLayout(new BorderLayout());
panel1.setLayout(new BorderLayout());
panel2.setLayout(new BorderLayout());
home.addComponent(BorderLayout.EAST,panel1);
home.addComponent(BorderLayout.WEST,panel2);
panel1.addComponent(Next);
panel2.addComponent(Back);
我在崩溃后得到的错误是"Cannot add component to BorderLayout Container without constraint parameter"。我尝试研究约束参数并在 IntelliJ 中使用 BorderLayout,但我发现的任何文本要么没有帮助,要么太复杂而难以理解。非常感谢!
错误消息告诉您,如果要将组件添加到边框布局,您必须指定放置它的位置。在将组件添加到 home 时,您已经这样做了,但是在将组件添加到 panel1
和 panel2
时,您还没有这样做。您需要添加 BorderLayout.EAST
(或 WEST
或其他)以获取:
panel1.addComponent(BorderLayout.EAST, Next);
panel2.addComponent(BorderLayout.WEST, Back);
但是,我认为你用错了。您可能不希望在 panel1 或 panel2 中使用边框布局——它们在默认流布局中没有问题,因此如果您删除 panel1/2.setLayout()
行,您的代码应该可以正常工作。
顺便说一句:在java中我们不在变量的开头使用大写字母,所以Next
和Back
应该是next
和back
.另外,panel1
应该类似于 nextPanel
,而 panel2
应该类似于 backPanel
。
再补充一件事 -- 没有人再使用 awt。我们都在继续前进(主要是 html5)。所以,在 swing 中尝试这个,你会得到:
import javax.swing.*;
...
JButton next = new JButton("Next");
JButton back = new JButton("Back");
JFrame home = new JFrame("Home");
home.setLayout(new BorderLayout());
home.add(back, BorderLayout.WEST);
home.add(next, BorderLayout.EAST);