6

ユーザーから入力を求められたときに入力したいテーブルがあります。問題は、テーブルにいくつの行が含まれるかを予測できないことです。テーブルが表示されるパネルのコンストラクターには、

    // add empty scrollPane to JPanel which will later hold table
              scrollPane = new JScrollPane(); 
    add(scrollPane);

このクラスには、最終的にテーブルを表示したいときに呼び出されるメソッドが含まれています

    public void displayTable(String[] columnNames, String[][] dataValues)
{
    table = new JTable(dataValues, columnNames);
    table.setPreferredScrollableViewportSize(new Dimension(300, 80)); 
    table.setFillsViewportHeight(true); 
    scrollPane.add(table);

    this.setVisible(true);
    scrollPane.repaint();

}

問題は、テーブルが表示されないことです。ScrollPaneがテーブルなしでどこにあるかのアウトラインが表示されます。テーブルが表示されないのはなぜですか?どうすれば修正できますか?

4

3 に答える 3

19

コンポーネントをJScrollPaneではなく、そのJViewportに追加する必要があります。

scrollPane.getViewport ().add (table);
于 2013-02-15T17:29:16.927 に答える
5

JScrollPaneにテーブルを追加する代わりに、scrollpaneのビューポートを作成し、そのビューをテーブルとして設定します。代わりに次のコードを使用します。
scrollPane.setViewportView(table)

于 2013-02-15T17:30:14.947 に答える
3

一般に、まだ値がない場合でも、JTableとを一緒に作成します。JScrollPane

動的テーブルには、 DefaultTableModelまたは拡張したを使用することをお勧めします。TableModel

于 2013-02-15T17:35:57.930 に答える