Pergunta

Java Newbie aqui. Eu tenho um JFRame que adicionei ao meu projeto NetBeans e adicionei o seguinte método, o que cria uma jtable. O problema é que, por algum motivo, quando eu chamo esse método, o JTable não é exibido. Alguma sugestão?

public void showFromVectors(Vector colNames, Vector data) {     
    jt = new javax.swing.JTable(data, colNames);
    sp = new javax.swing.JScrollPane(jt);
    //NB: "this" refers to my class DBGridForm, which extends JFrame
    this.add(sp,java.awt.BorderLayout.CENTER);
    this.setSize(640,480);
}

O método é chamado no contexto a seguir:

DBGridForm gf = new DBGridForm(); //DBGridForm extends JFrame
DBReader.outMatchesTable(gf);
gf.setVisible(true);

... onde dbreader.outMatchestable () é definido como

static public void outMatchesTable(DBGridForm gf) {
    DBReader ddb = new DBReader();
    ddb.readMatchesTable(null);
    gf.showFromVectors(ddb.lastRsltColNames, ddb.lastRsltData);
}

Meu palpite é que estou negligenciando algo, seja sobre as aulas de swing que estou usando ou sobre Java. Alguma ideia?

Foi útil?

Solução

"Este" em seu contexto não está claro. Está dentro de um applet? um jframe?

Você pode estar tendo um problema de layout, verifique se ligou para o Setlayout em sua classe com uma nova borda.

Em um aplicativo de giro, você deseja usar getRootContentPane (). Add () em vez de um add bruto (), dependendo da versão.

Java Tutorial sobre a adição de conteúdo de nível superior: http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html

Outras dicas

Se você não estiver em execução no tópico do evento, pode ser um problema-já vi isso causar coisas a não exibir.

Se esse código for chamado em resposta a um evento AWT (mouse clique, pressione o botão, ...), esse não é o problema, mas se ainda for o mesmo tópico que iniciou seu aplicativo, ou este código está executando um cronômetro, poderá muito bem estar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top