【发布时间】:2026-01-31 08:35:01
【问题描述】:
我创建了一个 JPanel 并向其中添加了一个 JTabbedPane。然后,我在此选项卡窗格中添加了另外两个面板,并将所有面板的布局设置为 null。但是 Frame 没有显示任何内容,如果我将主面板的布局从 null 更改为 BorderLayout 或 GridLayout,那么它可以完美运行。有人可以告诉我这里有什么问题.. 提前谢谢
我的代码: 我正在为每个组件创建对象,并通过检查空约束在指定的 getter 中为它们设置边界
第一面板:
public class InsurancePanel extends JPanel
{
public InsurancePanel()
{
getJpInsurance();
}
private static final long serialVersionUID = 1L;
public void getJpInsurance()
{
setLayout(null);
add(getJlLICName());
add(getJlCompany());
add(getJtfLICName());
add(getJtfCompany());
add(getJbUpdate());
}
}
第二个小组:
public class PatientPanel extends JPanel
{
public PatientPanel()
{
getJpPatient();
}
private static final long serialVersionUID = 1L;
public void getJpPatient()
{
setLayout(null);
add(getJlFirstName());
add(getJlLastName());
add(getJtfFirstName());
add(getJtfLastName());
add(getJbNew());
}
}
还有主面板:
public class MainPanel extends JPanel
{
private PatientPanel m_PatientPanel;
private InsurancePanel m_InsurancePanel;
private JTabbedPane jtpView;
public void designMainPanel()
{
setLayout(new GridLayout()); // if it is null, then nothing shows in the frame
setSize(650, 520);
setBounds(0, 0, 650, 520);
add(getJtpView());
}
public JTabbedPane getJtpView()
{
if (jtpView == null)
{
jtpView = new JTabbedPane();
jtpView.addTab("Patient", getPatientPanel());
jtpView.addTab("Insurance", getInsurancePanel());
}
return jtpView;
}
public PatientPanel getPatientPanel()
{
if (m_PatientPanel == null)
{
m_PatientPanel = new PatientPanel();
}
return m_PatientPanel;
}
public InsurancePanel getInsurancePanel()
{
if (m_InsurancePanel == null)
{
m_InsurancePanel = new InsurancePanel();
}
return m_InsurancePanel;
}
}
【问题讨论】:
-
在将组件添加到空布局时,您应该指定子组件的边界,否则您的子组件的维度为 0 并且看不到但使用布局。使用空布局非常糟糕。
-
是的,但我不熟悉秋千。所以我想让它在没有布局的情况下工作。我也尝试设置边界,即使它不起作用
-
那么你应该发布你的代码来看看有什么问题..好的。通过添加你的不工作的代码来编辑你的问题
-
用源代码编辑了我的问题,所以请看一下
标签: java jpanel jtabbedpane