所以我有一个JPanel
被分成另外两个JPanel
(虽然这几乎是不相关的)。在左侧,我有一个GridBagLayout
我已经组织在顶部有一个JLabel
,下面有一个JTextArea
,但JTextArea
不是直接在JLabel
下方。相反,有这个空的空间,我无法弄清楚它为什么存在或如何解决它。我对Java很新,GridBagLayout
所以我可能会遗漏一些东西,但我已经尝试了几件事来让它发挥作用。我有下面的代码以及它正在做什么的直观表示。任何帮助表示赞赏。
CODE
//LEFT SIDE
GridBagConstraints leftGBC = new GridBagConstraints();
JPanel leftSide = new JPanel(new GridBagLayout());
leftSide.setBorder(new EmptyBorder(inset, inset, inset, inset));
Font titleFont = bb5.comfortaa.deriveFont(Font.PLAIN, 16f);
leftGBC.gridx = 0;
leftGBC.gridy = 0;
leftGBC.weightx = 1;
leftGBC.weighty = 1;
leftGBC.anchor = GridBagConstraints.NORTH;
JLabel leftTitle = new JLabel("Objective");
leftTitle.setFont(titleFont);
leftTitle.setBorder(BorderFactory.createMatteBorder(0, 0, 2, 0, Color.BLACK));
leftGBC.fill = GridBagConstraints.HORIZONTAL;
leftSide.add(leftTitle, leftGBC);
leftGBC.gridy = 1;
leftGBC.anchor = GridBagConstraints.NORTH;
JTextArea objectiveArea = new JTextArea(objectiveText);
objectiveArea.setBackground(leftTitle.getBackground());
objectiveArea.setEditable(false);
objectiveArea.setFocusable(false);
objectiveArea.setFont(bb5.samsung1.deriveFont(16f));
objectiveArea.setLineWrap(true);
objectiveArea.setWrapStyleWord(true);
leftSide.add(objectiveArea, leftGBC);
VISUAL
答案 0 :(得分:3)
leftGBC.weightx = 1;
leftGBC.weighty = 1;
阅读Swing教程How to use GridBagLayout中的部分。该教程解释了weightx / weighty约束如何工作。这些值表明如何分配"额外空间"到每个细胞。因此看起来标签和文本区域都有额外的空间。我猜你想要标签为0。
如果这没有帮助(将来当您提出问题时),请发布展示问题的正确SSCCE。