1
I have a Swing app where the main window consists of a JtabbedPane
which contains some extended classes JPanel
[Viewprincipal, Viewcadastro, Viewrelatorio, etc...].
When I add Jlabels and Jbuttons, they appear and windows work normally, but when I prompt a JTextField
or JTextArea
within one of those classes that extend JPanel
, the Jtabbedpanel Buga and nothing appears.
If you try this.setLayout(null) Jtabbedpane and Jpanels work, but no internal components of Jpanels appear. I feel that setar null layout is very ugly.
What might be going on?
Putting as little as possible of the Viewcadastro code we have:
public class ViewCadastro extends JPanel{
public ViewCadastro(){
this.gettingStart();
}
public void gettingStart(){
this.setBackground(Color.lightGray);
this.painelHeader = new JPanel();
this.painelHeader.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
this.painelActions = new JPanel();
this.painelActions.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
this.labTitulo = new JLabel("Titulo: ");
this.painelHeader.add(labTitulo);
//this.txTitulo = new JTextField();
//this.painelHeader.add(txTitulo);
this.btnAdicionarFilme = new JButton("Add");
this.painelActions.add(btnAdicionarFilme);
this.add(painelHeader);
this.add(painelActions);
}
private JButton btnAdicionarFilme;
private JPanel painelHeader;
private JPanel painelActions;
public JLabel labTitulo;
public JTextField txTitulo;
}
If you take the comments out, he’ll make fun of everything.
And the Main View:
public class View extends JFrame{
public View(Control controller){
this.setCtrl(controller);
this.gettingStart();
}
public void gettingStart(){
this.setVisible(true);
this.setResizable(false);
this.setSize(1000,500);
tabs = new JTabbedPane();
painelPrincipal = new ViewPrincipal();
painelCadastro = new ViewCadastro();
painelRelatorios = new ViewRelatorios();
//Adicionando paineis
tabs.add("Principal",painelPrincipal);
tabs.add("Cadastros",painelCadastro);
tabs.add("Relatórios",painelRelatorios);
this.add(tabs);
}
private Control ctrl;
private ViewCadastro painelCadastro;
private ViewRelatorios painelRelatorios;
private ViewPrincipal painelPrincipal;
private JTabbedPane tabs;
}
The main control:
public class Control {
private View viewer;
public Control(){
setViewer(new View(this));
}
public View getViewer() {
return viewer;
}
public void setViewer(View viewer) {
this.viewer = viewer;
}
}
Pulled by the big main pattern:
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Control();
}
}