如何使用GridBagLayout将组件放在右下角?

我需要在JPanel显示单个组件,并且我希望始终将该组件保留在右下角。 我尝试用GridBagLayout做到这一点:

 val infoArea = new TextArea { text = "Hello!" border = Swing.EmptyBorder(30) background = Color.RED editable = false } val p = new JPanel p.setLayout(new GridBagLayout) val c = new GridBagConstraints c.gridx = 0 c.gridy = 0 c.anchor = GridBagConstraints.LAST_LINE_END p.add(infoArea.peer,c) val f = new JFrame f.setContentPane(p) f.setVisible(true) 

但由于某种原因,文本区域处于中心位置:

在此处输入图像描述

我在这做错了什么?

 final JFrame frame = new JFrame(); frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); frame.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.gridy = 0; gbc.fill = GridBagConstraints.BOTH; gbc.weightx = 1.0; gbc.weighty = 1.0; frame.add(Box.createGlue(), gbc); final JTextArea textArea = new JTextArea("SE"); textArea.setPreferredSize(new Dimension(50, 50)); textArea.setOpaque(true); textArea.setBackground(Color.RED); gbc = new GridBagConstraints(); gbc.gridx = 1; gbc.gridy = 1; gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0.0; gbc.weighty = 0.0; frame.add(textArea, gbc); frame.setSize(640, 480); frame.setVisible(true); 

…如果你真的想要使用GridBagLayout

例如:

 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import javax.swing.*; public class LayoutDemo { private static void createAndShowGui() { JLabel label = new JLabel("Hello"); label.setOpaque(true); label.setBackground(Color.red); JPanel bottomPanel = new JPanel(new BorderLayout()); bottomPanel.add(label, BorderLayout.LINE_END); JPanel mainPanel = new JPanel(new BorderLayout()); mainPanel.add(bottomPanel, BorderLayout.PAGE_END); mainPanel.setPreferredSize(new Dimension(400, 400)); JFrame frame = new JFrame("LayoutDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(mainPanel); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGui(); } }); } } 

在此处输入图像描述