我最近开始学习Java,现在正尝试与Swing合作,所以我对此还很陌生。我正在尝试使用(在此示例中)1行和1列制作gridbaglayout,因此我向布局中添加了具有某些背景颜色的JPanel,但是背景颜色似乎仅针对文本的长度而不是针对文本的长度出现。整个面板。我希望背景色在整行中都保持不变,
此外,我必须添加第二个具有较大权重的列,以确保面板不会自动居中,是否有更好的方法来实现呢?
这是我目前拥有的代码,
public static void main(String args[]) {
JFrame mainFrame = new JFrame();
mainFrame.setSize(900, 600);
mainFrame.setLayout(new GridBagLayout());
JPanel roll = new JPanel();
roll.setBackground(new Color(190, 177, 245));
JLabel wageChangeTag = new JLabel("Change");
GridBagConstraints gRoll = new GridBagConstraints();
gRoll.gridx = 0;
gRoll.gridy = 0;
gRoll.weightx = 5;
gRoll.anchor = GridBagConstraints.CENTER;
roll.add(wageChangeTag, gRoll);
////////////// MAIN GRID//////////////////
GridBagConstraints gc = new GridBagConstraints();
gc.gridx = 0;
gc.gridy = 0;
gc.weightx = 5;
gc.anchor = GridBagConstraints.FIRST_LINE_START;
gc.weighty = 5;
mainFrame.add(roll, gc);
gc.gridx++;
gc.weightx = 0.1;
mainFrame.add(new JLabel(), gc);
mainFrame.setVisible(true);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
答案 0 :(得分:1)
您看到的实际上是您所有的JPanel,与其中的标签无关。例如,您可以通过向其添加边框来看到它(设置背景后:
roll.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
现在要使其水平扩展,请尝试在JPanel GridBagConstraints中添加以下行:
gc.fill = GridBagConstraints.HORIZONTAL;