Boa tarde a todos!
Bom, desenvolvi uma aplicação com diversas telas para cadastrar, alterar, deletar e exibir registros.
tudo ok, mas agora estou tentando colocar esses JPanels dentro de abas.
o problema é o seguinde, quando eu adiciono o JPanel dentro do JTabbedPane todos os elementos (JLabel, JTextField etc) perdem seu posicionamentos, de forma que ficam lado a lado (como se perdessem seus “setBounds”):

O certo seria:

Classe que to testando que cria as abas (peguei aqui do forum mesmo, hehe):
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import cadastrar.CadastrarCargo;
public class Formulario extends JFrame {
public Formulario() throws Exception {
setTitle("Usando TabbedPane");
setSize(800,600);
JTabbedPane pane = new JTabbedPane();
CadastrarCargo cad = new CadastrarCargo();
pane.add(cad.retornarPainel(), "1 Panel");
pane.add(new JPanel(), "2 Panel");
pane.add(new JPanel(), "3 Panel");
add(pane);
}
public static void main(String args[]) throws Exception {
Formulario janela = new Formulario();
janela.setVisible(true);
}
}
Agora a classe do JPanel que tentei inserir:
package cadastrar;
import java.awt.Font;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import verificar.ProximoCodigo;
public class CadastrarCargo extends JFrame {
private JLabel title;
private JLabel codigo;
private JTextField Tcodigo;
private JLabel nome;
private JTextField Tnome;
private JButton cadastrar;
private JButton cancelar;
public JLabel titulo() {
title = new JLabel();
title.setText("Cadastrar Cargo");
title.setFont(new java.awt.Font("Arial", 20, 36));
title.setBounds(20, 11, 290, 40);
return title;
}
public JLabel Codigo() {
codigo = new JLabel();
codigo.setText("Codigo:");
codigo.setFont(new java.awt.Font("Arial", 20, 15));
codigo.setBounds(20, 100, 120, 20);
return codigo;
}
public JTextField TCodigo() throws Exception {
ProximoCodigo pc = new ProximoCodigo();
Tcodigo = new JTextField(Integer.toString(pc.ProximoCargo() + 1));
Tcodigo.setBounds(98, 100, 200, 20);
return Tcodigo;
}
public JLabel Nome() {
nome = new JLabel();
nome.setText("Nome:");
nome.setFont(new java.awt.Font("Arial", 20, 15));
nome.setBounds(20, 125, 120, 20);
return nome;
}
public JTextField TNome() {
Tnome = new JTextField();
Tnome.setBounds(98, 125, 200, 20);
return Tnome;
}
public JButton cadastrar() {
cadastrar = new JButton("Cadastrar");
cadastrar.setBounds(180, 330, 100, 25);
cadastrar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
SqlCadastrar sqlc = new SqlCadastrar();
try {
sqlc.inserirCargo(Integer.parseInt(Tcodigo.getText()),
Tnome.getText());
} catch (NumberFormatException e) {
JOptionPane
.showMessageDialog(
null,
"Erro de entrada de dados: Por favor, verifique se os valores fornecidos estão dentro do formato padrão solicitado");
} catch (SQLException sqle) {
JOptionPane
.showMessageDialog(
null,
"Erro no banco de dados: Por favor, verifique se o código fornecido já é existente");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
return cadastrar;
}
public JButton cancelar() {
cancelar = new JButton("Cancelar");
cancelar.setBounds(305, 330, 100, 25);
cancelar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
hide();
}
});
return cancelar;
}
public ImageIcon link() {
ImageIcon link = new ImageIcon(
"C:/Users/Nathã/Desktop/green-background-image.jpg");
return link;
}
public JLabel fundo() {
JLabel imagem = new JLabel(link());
imagem.setSize(600, 400);
return imagem;
}
public CadastrarCargo() throws Exception {
this.setSize(600, 400);
this.setTitle("CADASTRAR CARGO");
this.setContentPane(retornarPainel());
this.setResizable(false);
this.setLayout(null);
}
public JPanel retornarPainel() throws Exception {
JPanel jp = new JPanel();
jp.add(titulo());
jp.add(Nome());
jp.add(TNome());
jp.add(Codigo());
jp.add(TCodigo());
jp.add(cadastrar());
jp.add(cancelar());
jp.add(fundo());
return jp;
}
}
Também ja tentei com o exemplo la dos tutoriais Java, e da no mesmo :
Alguém pode me informar o que faço de errado?
Muito obrigado pela atenção!!
