2016-12-15 8 views
0

JavaのSwing開発にはかなり新しいImです。私は初期化が行われた後、私が持っているいくつかの値をテーブルに移入することに助けが必要です。初期化後のJTableの変更方法は?

someClass extends JPanel{ 
private JLabel something; 
static private JTable Table; 
private JPanel temp; 

someClass(){ 
    setLayout(new BorderLayout()); 
    selectSong = new JLabel("some text"); 
    temp = new JPanel(); 
    temp.setLayout(new FlowLayout()); 
    temp.add(something); 
    Table = new JTable(); 
    //Table.setVisible(false); 
    add(temp, BorderLayout.NORTH); 

    add(new JScrollPane(Table), BorderLayout.CENTER); 

} 
static void populateTable(ArrayList<String> list){ 
    DefaultTableModel dtm = new DefaultTableModel(); 
    dtm.addColumn("title", list.toArray()); 
    Table = new JTable(dtm); 
    Table.setVisible(true); 
    new someClass().add(new JScrollPane(Table), BorderLayout.CENTER); 
} 
} 

このクラスはsomeClassと呼ばれ、JPanelのサブクラスです。私はこれのオブジェクトを使用してメインフレーム(ここには表示されていません)に追加しています。これによると、最初はGUIフォームが空のテーブルで作成され、いくつかの操作が完了した後、私はpopulateTable関数を呼び出します。これはテーブルの値を変更してタイトル(titleという名前)を1つ持ち、arraylist後続の行の要素

+0

をfireTableDataChanged使用する必要がありますが、既存のものを移植したい場合は、なぜあなたは、新しいテーブルを作成するのですか? – Aelop

+0

なぜあなたはあなたの 'JTable' 'テーブル'を呼び出しますか?小文字で開始する必要があります。 – Thibstars

+1

1)すぐに役立つようにするには、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 2)一般的なJava命名法(命名規則 - 例えば 'EachWordUpperCaseClass'、' firstWordLowerCaseMethod() '、' firstWordLowerCaseAttribute'が 'UPPER_CASE_CONSTANT'以外の場合)を学び、それを一貫して使用してください。 3)あなたの一般的な質問に対する答えは、「テーブルではなくモデルを変更する」ことです。 4)なぜそれが良いものなのか説明できない限り、「静的」を避けてください。 5)テーブルモデルをクラス属性にしてアクセサーを提供します。 6)これらの点は特別な順序ではありません。 7)do not .. .. –

答えて

2

あなたはJTable「テーブル」と呼ばれると仮定すると:

static void populateTable(ArrayList<String> list){ 
     DefaultTableModel dtm = new DefaultTableModel(); 
     dtm.addColumn("title", list.toArray()); 
     table.setModel(dtm); 
    } 
    } 

それがテーブルを移入とは何の関係もないようあなたはまた、その方法でtable.setVisible(true);を呼び出すべきではありません。

編集:他人によって提案されています。DefaultTableModelのクラス属性を使用する方がよいでしょう。

1
someClass extends JPanel{ 
    private JLabel something; 
    static private JTable Table; 
    private JPanel temp; 
    private DefaultTableModel dtm; 

    someClass(){ 
     setLayout(new BorderLayout()); 
     selectSong = new JLabel("some text"); 
     temp = new JPanel(); 
     temp.setLayout(new FlowLayout()); 
     temp.add(something); 
     dtm= new DefaultTableModel(); 
     Table = new JTable(dtm); 
     add(temp, BorderLayout.NORTH); 

     add(new JScrollPane(Table), BorderLayout.CENTER); 

    } 
    static void populateTable(ArrayList<String> list){ 
     dtm.addColumn("title", list.toArray()); 
    } 
    } 

これはあなたのクラスが

関連する問題