Динамически добавленный JTable не отображается

StackOverflow https://stackoverflow.com/questions/121715

  •  02-07-2019
  •  | 
  •  

Вопрос

Java-новичок здесь.У меня есть JFrame, который я добавил в свой проект NetBeans, и добавил к нему следующий метод, который создает JTable.Проблема в том, что по какой-то причине, когда я вызываю этот метод, JTable не отображается.Какие-либо предложения?

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);
}

Метод вызывается в следующем контексте:

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

...где DBReader.outMatchesTable() определяется как

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

Я предполагаю, что я что-то упускаю из виду либо в отношении классов Swing, которые я использую, либо в отношении Java.Есть идеи?

Это было полезно?

Решение

«это» в вашем контексте неясно.Это внутри апплета?JFrame?

Возможно, у вас проблема с макетом. Убедитесь, что вы вызвали setLayout в своем классе с новым borderlayout.

В приложении Swing вы захотите использовать getRootContentPane().add() вместо обычного add(), в зависимости от версии.

Учебное пособие по Java по добавлению контента верхнего уровня: http://java.sun.com/docs/books/tutorial/uiswing/comComponents/toplevel.html

Другие советы

Если вы не работаете в потоке событий, это может быть проблемой — я видел, что некоторые вещи не отображаются.

Если этот код вызывается в ответ на событие AWT (щелчок мыши, нажатие кнопки и т. д.), то это не проблема, но если это все еще тот же поток, который запустил ваше приложение, или этот код выполняется по таймеру, это может очень хорошо быть.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top