1

Java初心者はこちら。netbeans プロジェクトに追加した JFrame があり、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);
}

私の推測では、私が使用しているスイング クラスまたは Java について、何かを見落としていると思います。何か案は?

4

2 に答える 2

1

あなたの文脈での「これ」は不明確です。それはアプレットの中にありますか?JFrame?

レイアウトの問題が発生している可能性があります。新しい borderlayout を使用して、クラスで setLayout を呼び出したことを確認してください。

バージョンによっては、swing アプリケーションでは、生の add() の代わりに getRootContentPane().add() を使用する必要があります。

最上位コンテンツの追加に関する Java チュートリアル: http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html

于 2008-09-23T15:34:17.023 に答える
0

イベント スレッドで実行していない場合、問題が発生する可能性があります。表示されない原因となるものを見てきました。

このコードが AWT イベント (マウスのクリック、ボタンの押下など) に応答して呼び出される場合、それは問題ではありませんが、アプリを開始したのと同じスレッドである場合、またはこのコードがタイマーを使用して実行されている場合は、問題になる可能性があります。とても元気です。

于 2008-09-23T20:12:31.740 に答える