gpt4 book ai didi

java - 如何将 Jpanels 展开成 GridBagLayout

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:13:34 26 4
gpt4 key购买 nike

我的问题是如何将我的 3 个 JPanel 扩展到我的 GrigBadLayout 中。我添加了 2 张照片,第一张样本并显示结果,第二张是我想要的。

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JPanel;


public class ListMembersView extends JPanel{
JPanel headerPanel;
JPanel containerPanel;
JPanel footerPanel;

public ListMembersView(){

initComponents();
initLayout();
}

private void initComponents(){

this.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255, 255, 255),5));

headerPanel = new JPanel();
headerPanel.setBackground(Color.red);
containerPanel = new JPanel();
containerPanel.setBackground(Color.yellow);
footerPanel = new JPanel();
footerPanel.setBackground(Color.blue);
}

private void initLayout(){
this.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
/*Not expand JPanel?*/
c.fill = GridBagConstraints.HORIZONTAL;

c.gridx=0; c.gridy=0;
this.add(headerPanel,c);

c.gridx=0; c.gridy=1;
c.gridwidth = 3;
this.add(containerPanel,c);

c.gridx=0; c.gridy=2;
this.add(footerPanel,c);

}
}

我的结果是:

enter image description here

我愿意这样:

enter image description here

最佳答案

您需要将 columnWeights = {1}rowWeights = {1, 1,1}fill 都设置为:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;


public class ListMembersView extends JPanel{
JPanel headerPanel;
JPanel containerPanel;
JPanel footerPanel;

public ListMembersView(){

initComponents();
initLayout();
}

private void initComponents(){

this.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255, 255, 255),5));

headerPanel = new JPanel();
headerPanel.setBackground(Color.red);
containerPanel = new JPanel();
containerPanel.setBackground(Color.yellow);
footerPanel = new JPanel();
footerPanel.setBackground(Color.blue);
}

private void initLayout(){
GridBagLayout gridBagLayout = new GridBagLayout();
this.setLayout(gridBagLayout);

gridBagLayout.columnWeights = new double[] {1};
gridBagLayout.rowWeights = new double[] {1, 1, 1};
GridBagConstraints c = new GridBagConstraints();
/*Not expand JPanel?*/
c.fill = GridBagConstraints.BOTH;

c.gridx=0; c.gridy=0;
this.add(headerPanel,c);

c.gridx=0; c.gridy=1;
c.gridwidth = 3;
this.add(containerPanel,c);

c.gridx=0; c.gridy=2;
this.add(footerPanel,c);

}

public static void main(String[] args) {
JFrame frame = new JFrame("test");
frame.setLayout(new BorderLayout());
frame.add(new ListMembersView());
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

fill=BOTH teels,面板应该在两个方向上延伸。

weights 说明如何根据权重的总和按比例划分行或列之间的空间。

关于java - 如何将 Jpanels 展开成 GridBagLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40128569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com