Adicionar table model em tabbledpane

9 respostas
paico

Olá pessoal,

estou de todas as formas evitando usar o netbeans para fazer isso... criei um tabbled pane na mão e usei um código que já tinha utilizado em outro arquivo (to aprendendo ainda :) ) para criar um table model.

Não gera erro algum, mas também não mostra a bendita tabela na aba... o código é o seguinte:

final JTable tabelaDados = new JTable();
        //faz com que as celulas não sejam editáveis
        DefaultTableModel mdlTabelaDados = new DefaultTableModel(){
            @Override
            public boolean isCellEditable(int row, int col)
            {
                return false;
            }
        };
        tabelaDados.setModel(mdlTabelaDados); // associa o modelo ao componente
        //adiciona colunas
        mdlTabelaDados.addColumn("ID");
        mdlTabelaDados.addColumn("Paciente");
        mdlTabelaDados.addColumn("Especialista");
        mdlTabelaDados.addColumn("Data");
        //informa a largura das colunas
        tabelaDados.getColumnModel().getColumn(0).setPreferredWidth(50);
        tabelaDados.getColumnModel().getColumn(1).setPreferredWidth(350);
        tabelaDados.getColumnModel().getColumn(2).setPreferredWidth(350);
        tabelaDados.getColumnModel().getColumn(3).setPreferredWidth(200);
        //altura da linha
        tabelaDados.setRowHeight(25);
        //define a fonte
        fontePadrao = new Font("Trebuchet MS", Font.BOLD, 13);
        tabelaDados.setFont(this.fontePadrao);
        mdlTabelaDados.addRow(new Object[] {"1","Tiago","Psicologo","10/10/2010"}); // adiciona uma linha ao modelo


        final JTabbedPane tabbedPane = new JTabbedPane();
        tabbedPane.setBounds(0, 0, 502, 371);
        getContentPane().add(tabbedPane);

        final JPanel panel1 = new JPanel();
        panel1.setLayout(null);
        tabbedPane.addTab("Aba 1", null, panel1, null);

        panel1.add(tabelaDados); /////////////////////////////// adiciono a tabela na aba... ou tento...

        final JPanel panel2 = new JPanel();
        panel2.setLayout(null);
        tabbedPane.addTab("Aba 2", null, panel2, null);

Alguém me dá uma luz? :)

Obrigado!

9 Respostas

ViniGodoy

Comece não usando um DefaultTableModel. Principalmente uma subclasse filha anônima dele.

paico

Olá Vitor,

e isto resolveria este problema?

Grato pela atenção.

Nicolas_Fernandes

Como você tá usando NullLayout, defina uma posição e um tamanho pra sua tabela com o uso do setBounds:

tabela.setBounds(100, 10, 300, 200);

Isto significa que a tabela estará na posição X 100, Y 10, e terá a largura de 300 e altura de 200.

Não use NullLayout, a menos que sua aplicação seja não redimensionável.

Abraços!

paico

show de bola, funcionou! Não está aparecendo o nome das colunas, mas isto dou uma fuçada aqui :slight_smile: Já valeu!!

Obrigado mesmo!

ViniGodoy

Estes e diversos outros que você ainda não teve.

Para fazer o JTable funcionar, é necessário entender como ele funciona. :wink:

Nicolas_Fernandes

paico:
show de bola, funcionou! Não está aparecendo o nome das colunas, mas isto dou uma fuçada aqui :slight_smile: Já valeu!!

Obrigado mesmo!

PELO AMOR DE DEUS, esqueça esse DefaultTableModel! Só da retrabalho e deixa o código complicado, além de não trabalhar diretamente com objetos.

Siga o meu link na assinatura (créditos ao ViniGodoy) e crie um próprio TableModel, estendendo de AbstractTableModel. Você vai ver como as coisas fluirão bem melhor!

Abraços!

ViniGodoy

Para aparecer o nome das colunas, coloque sua tabela dentro de um JScrollPane.

Outra coisa, é uma péssima prática usar o NullLayout. Ele não permite redimensionamento da tela, e não é multi-plataforma.

Marky.Vasconcelos

Só pra dar mais um apoio a idéia, NÃO use DefaultTableModel.

Voce vai perceber que depois que aprender a trabalhar corretamente com o modelo, é que voce nao vai pensar nele como se fosse parte da tela, e sim como uma lista com funcionalidades de dizer a alguém o que deve fazer(no caso o JTable).

PS: Nome dele é Vinicius nao Vitor hehe

paico

Olá “Vinicius” =D, imaginava que era isso que você respondeu mesmo =)

Estou começando ainda com java, mas vou dar uma estudada nestes links que tem nas assinaturas, quero aprender do jeito certo!

Valeu mesmo gurizada! :slight_smile:

Criado 5 de outubro de 2010
Ultima resposta 5 de out. de 2010
Respostas 9
Participantes 4