Segue o código do método que constrói a GUI:
[code]protected void build()
{
FormLayout layout = new FormLayout(
“right:pref, 3dlu, pref, 6dlu, right:pref, 3dlu, pref, 3dlu, center:pref, 3dlu, pref”,
“pref, 3dlu, pref, 3dlu, pref, 6dlu, pref, 3dlu, pref, 3dlu, pref, 6dlu, pref, 3dlu, pref” +
", 3dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, 6dlu, pref, 3dlu, pref"
);
CellConstraints cc = new CellConstraints();
DefaultFormBuilder builder = new DefaultFormBuilder(layout);
builder.setDefaultDialogBorder();
int y = 0;
builder.add(new JLabel("Disciplina: "), cc.xy(1, ++y));
builder.add(disciplina, cc.xy(3, y));
builder.add(descricaoDisciplina, cc.xyw(5, y, 7));
++y;
builder.add(new JLabel("Ano/Período: "), cc.xy(1, ++y));
builder.add(anoPeriodo, cc.xy(3, y));
builder.add(new JLabel("Tipo turma: "), cc.xy(5, y));
builder.add(tipoTurma, cc.xy(7, y));
builder.add(new JLabel("Turma: "), cc.xy(9, y));
builder.add(turma, cc.xy(11, y));
++y;
builder.add(new JLabel("Oferecimento: "), cc.xy(1, ++y));
builder.add(formaOferecimento, cc.xy(3, y));
builder.add(new JLabel("Status"), cc.xy(9, y));
builder.add(status, cc.xy(11, y));
++y;
// Apenas para Disciplinas Condensadas
builder.addSeparator("Período de Aulas", cc.xyw(1, ++y, 3));
builder.addSeparator("Prazos", cc.xyw(5, y, 7));
++y;
builder.add(new JLabel("Início: "), cc.xy(1, ++y));
builder.add(inicioAulasCondensada, cc.xy(3, y));
builder.add(new JLabel("Inscrição: "), cc.xy(5, y));
builder.add(inicioInscricaoCondensada, cc.xy(7, y));
builder.add(new JLabel("a"), cc.xy(9, y));
builder.add(fimInscricaoCondensada, cc.xy(11, y));
++y;
builder.add(new JLabel("Término: "), cc.xy(1, ++y));
builder.add(fimAulasCondensada, cc.xy(3, y));
builder.add(new JLabel("Cancelamento: "), cc.xy(5, y));
builder.add(inicioCancelamentoCondensada, cc.xy(7, y));
builder.add(new JLabel("a"), cc.xy(9, y));
builder.add(fimCancelamentoCondensada, cc.xy(11, y));
++y;
// fim condensada
builder.addSeparator("Vagas/Preenchimento", cc.xyw(1, ++y, 3));
builder.addSeparator("Abertura e Cancelamento", cc.xyw(5, y, 7));
++y;
builder.add(new JLabel("Aluno regular: "), cc.xy(1, ++y));
builder.add(numeroVagasAlunoRegular, cc.xy(3, y));
builder.add(new JLabel("Data/hora abertura: "), cc.xyw(5, y, 3));
builder.add(dataHoraAbertura, cc.xyw(9, y, 3));
++y;
builder.add(new JLabel("Aluno especial: "), cc.xy(1, ++y));
builder.add(numeroVagasAlunoEspecial, cc.xy(3, y));
builder.add(new JLabel("Cancelamento: "), cc.xyw(5, y, 3));
builder.add(dataHoraCancelamento, cc.xyw(9, y, 3));
++y;
builder.add(new JLabel("Total: "), cc.xy(1, ++y));
builder.add(totalVagas, cc.xy(3, y));
builder.add(new JLabel("Motivo: "), cc.xy(5, y));
builder.add(motivoCancelamento, cc.xyw(7, y, 5));
++y;
builder.add(new JLabel("Mínimo: "), cc.xy(1, ++y));
builder.add(preenchimentoMinimo, cc.xy(3, y));
++y;
builder.addSeparator("Professores", cc.xyw(1, ++y, 11));
++y;
builder.add(SwingUtils.scrollComponent(professoresCRUD, 100), cc.xyw(1, ++y, 11));
JPanel panel = builder.getPanel();
this.add(panel);
}[/code]