Boa noite a todos.
Estou postando esta dúvida aqui no básico do forum por que acredito que esta ira ajudar outros que esteja iniciando em java.
Fiz um programa. Em uma das telas eu uso o BorderLayout padrão. Em baixo “South” eu coloco botões em um conteiner definido com FlowLayout m no centro “Center” eu coloco um JPanel com layout definido como nulo. Aqui entra o problema os botôes aparecem normalmente mas a tela fica reduzida ao tamanho dos botôes apenas, isto é enquanto o JPanel que eu coloco estiver com layout definido como nulo ele não aparece na aplicação se eu mudar o layout para qualquer outro tipo ai sim ele aparece normalmente.
Alguém pode me ajudar.
Segue um exemplo que criei para voce avaliarem
import java.awt.;
import java.awt.event.;
import javax.swing.*;
public class Teste01 extends JFrame implements ActionListener
{
private JLabel lbBancos;
private JLabel lbNome;
private JLabel lbSenha;
private JTextField tfNome;
private JPasswordField pswSenha;
private JComboBox jcbBancos;
private JPanel pnBt;
private JPanel pnEdts;
private JPanel pnSul;
private JButton btOk;
private JButton btCancela;
private String LstBancos[] = {“IBM DB2”,“MSSQL Server”,“My SQL”,“ORACLE 10G”};
public Teste01()
{
super("Aplicação Grafica em Java");
try
{
setSize(500,550);
setLocation(200,180);
setResizable(false);
lbNome = new JLabel("Usuário:"); //lbNome.setLocation(10,20);
lbSenha = new JLabel("Senha"); //lbSenha.setLocation(30,50);
lbBancos = new JLabel("Conectar banco:"); //lbBancos.setLocation(50,80);
tfNome = new JTextField(); // tfNome.setBounds(100,20,250,20);
pswSenha = new JPasswordField(); // pswSenha.setBounds(100,50,150,20);
jcbBancos = new JComboBox(LstBancos); // jcbBancos.setBounds(100,80,150,20);
pnEdts = new JPanel();
pnEdts.setLayout(new GridLayout(3,2));
pnEdts.setSize(450,350);
pnEdts.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),"Credenciais do Usuário"));
pnEdts.add(lbNome);
pnEdts.add(tfNome);
pnEdts.add(lbSenha);
pnEdts.add(pswSenha);
pnEdts.add(lbBancos);
pnEdts.add(jcbBancos);
pnBt = new JPanel();
pnBt.setLayout(new FlowLayout());
btOk = new JButton("OK");
btOk.setToolTipText("Inica conexão");
btCancela = new JButton("Cancela");
btCancela.addActionListener(this);
btCancela.setToolTipText("Cancela operação \n e sai do sistema");
pnBt.add(btOk);
pnBt.add(btCancela);
pnSul = new JPanel();
getContentPane().add(pnSul,"North");
getContentPane().add("Center",pnEdts);
getContentPane().add(pnBt,"South");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
}
catch(NullPointerException npe)
{
System.out.println("Erro: "+npe.getMessage());
npe.printStackTrace();
}
}
public void actionPerformed(ActionEvent ev)
{
if (ev.getSource() == btCancela)
{
System.gc();
System.exit(0);
}
}
public static void main(String args[])
{
Teste01 t1 = new Teste01();
t1.setVisible(true);
}
}
Obrigado a todos.