我正在尝试让我的 GUI 显示如下:
Grocery Cart [Refill]
(TextArea)
我目前正在使用 BorderLayout
,我想坚持使用它。如何在同一 JPanel
中获取 JLabel
和 JButton
下方的文本区域?这是我针对特定区域的代码:
如何在两个并排的下方添加文本框?每当我添加它时,它就在它们旁边。
JPanel newPanel = new JPanel();
JLabel label = new JLabel("Grocery Cart");
label.setFont(new Font("Arial", Font.BOLD, 20));
newPanel.add(label);
contentPane.add(newPanel, BorderLayout.WEST) ;
JButton btnNewButton = new JButton("Refill");
btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 20));
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
newPanel.add(btnNewButton);
最佳答案
如果我的理解是正确的,这是你需要做的:
JPanel mainPanel = new JPanel(new BorderLayout());
JPanel eastPanel = new JPanel(new BorderLayout());
JTextArea area = new JTextArea("Test content");
JLabel label = new JLabel("Grocery Cart");
label.setFont(new Font("Arial", Font.BOLD, 20));
mainPanel.add(label, BorderLayout.WEST);
JButton btnNewButton = new JButton("Refill");
btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 20));
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
eastPanel.add(btnNewButton, BorderLayout.WEST);
eastPanel.add(area, BorderLayout.CENTER);
mainPanel.add(eastPanel, BorderLayout.CENTER);
contentPane.add(mainPanel, BorderLayout.NORTH);
主要思想是,为了使用简单的布局类型(例如边框和流线)构建复杂的布局,您必须使用容器层次结构并结合流线和边框布局来发挥创意。
在我的示例中,标签和按钮不可调整大小,并且它们的宽度始终等于它们的首选宽度。然而,文本区域可以调整大小并占用其容器的剩余宽度。
请注意,所有添加到 mainPanel 的组件都可以垂直调整大小。为了将 mainPanel 保持在其首选高度,您将其放置到 contentPane 的 BorderLayout.NORTH 或 SOUTH。
关于java - 如何使用 BorderLayout 排列组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49393806/