Java 多个JPanel在另一个JPanel中

Java 多个JPanel在另一个JPanel中,java,jpanel,Java,Jpanel,我必须制作一个这样的格式,比如制作一个1,2面板,然后在左侧放置一个3,1面板。然后,我把4个文本字段放在左中间面板和左下面板中的一个按钮。 我不确定我是否可以只使用GridLayout,还是也必须使用BorderLayout 我怎样才能把它组织起来,因为当我设置它的时候,我不能正确地进行布局。文本字段的位置不正确,它们最终位于右侧 public类CreatePanel扩展了JPanel { 私有向量项目列表; 私人按钮1; 私人项目spendingPanel spendingPanel; 私

我必须制作一个这样的格式,比如制作一个1,2面板,然后在左侧放置一个3,1面板。然后,我把4个文本字段放在左中间面板和左下面板中的一个按钮。 我不确定我是否可以只使用GridLayout,还是也必须使用BorderLayout

我怎样才能把它组织起来,因为当我设置它的时候,我不能正确地进行布局。文本字段的位置不正确,它们最终位于右侧

public类CreatePanel扩展了JPanel
{
私有向量项目列表;
私人按钮1;
私人项目spendingPanel spendingPanel;
私有JFrame框架1;
JPanel Panel 1;
JPanel leftPanel;
JPanel子面板;
网格布局1;
边界布局2;
网格布局3;
JLabel消息;
JLabel标签名;
JLabel标签号;
JLabel标签定位;
JLabel标签;
JTextField textField1;
JTextField textfield 2;
JTextField textfield 3;
JTextField textfield 4;
//构造函数初始化组件并使用某些布局组织它们
公共CreatePanel(矢量项目列表、项目显示面板显示面板显示面板)
{
this.projectList=项目列表;
this.spendingPanel=spendingPanel;
//在这里组织组件
layout1=新的网格布局(1,2);
布局2=新的边界布局(1,3);
layout3=新网格布局(4,2);
此.setLayout(layout1);
panel1=新JPanel(布局1);
leftPanel=新的JPanel(布局3);
子面板=新的JPanel(布局2);
增加(第1组);
小组1.添加(子小组);
面板1.添加(左面板);
labelName=新的JLabel(“项目名称”);
leftPanel.add(labelName);
textField1=新的JTextField(“,15”);
添加(textField1,BorderLayout.SOUTH);
labelName=新的JLabel(“项目编号”);
leftPanel.add(labelName);
textField2=新的JTextField(“,15”);
leftPanel.add(textField2);
labelLocation=新的JLabel(“项目位置”);
leftPanel.add(标签位置);
textField3=新的JTextField(“,15”);
leftPanel.add(textField3);
labelFunding=新的JLabel(“初始资金”);
leftPanel.add(labelfinding);
textField4=新的JTextField(“,15”);
leftPanel.add(textField4);
添加(左面板);
button1=新建JButton(“创建项目”);
子面板添加(按钮1,南部边界布局);

}
为了得到您可能想要的结果,您需要稍微调整一下代码

你的台词

panel1 = new JPanel(layout1);
leftPanel = new JPanel(layout3);
subPanel = new JPanel(layout2);
应改为

panel1 = new JPanel(new GridLayout(2, 1));
leftPanel = new JPanel(layout3);
subPanel = new JPanel(layout2);
GridLayout
先行后列。您的
layout1
定义了一行和两列,但您将其用于文本字段和按钮,因此我假设这两个面板需要位于彼此上方

第二,您需要从更改订单

add(panel1);
panel1.add(subPanel);
panel1.add(leftPanel);

最后,我认为你需要改变

add(leftPanel);
button1 = new JButton("Create a project");

再次添加
leftPanel
似乎会破坏布局。如果您不想在此处看到您的
spendingPanel
,可以使用
new JPanel()


这是一个

你能发布你已经尝试过的代码吗?
add(leftPanel);
button1 = new JButton("Create a project");
add(spendingPanel);
button1 = new JButton("Create a project");