2012-03-07 8 views
0

jPanelにjtableコンポーネントを追加しようとしていますが、表示できません。何が間違っているのですか?jPanelにコンポーネントを追加するjava

table gui = new table(data,colum); 
mainPanel.add(gui.table); 

class table extends JFrame 
{ 
    public JTable table; 

    public table(Vector data, Vector colum) 
    { 
     setLayout(new FlowLayout()); 
     table = new JTable(data,colum); 
     table.setPreferredScrollableViewportSize(new Dimension(900,10)); 
     table.setFillsViewportHeight(true); 
     JScrollPane scrollPane = new JScrollPane(table); 
     add(scrollPane); 
    } 

} 
+0

を受け入れる--Edited [sscce(http://www.sscce.org)を含めてください。 – Moonbeam

+0

これは混乱します。なぜ、JFrameに物を追加し、それを別のJPanelに追加するのですか?この背後にある動機は何ですか?コンポーネントを視覚化できるのは2回ではなく1回だけであることがわかります。同じJTableを複数回表示させたい場合は、複数のJTableを作成し、それらが同じテーブルモデルを共有するようにする必要があります。 –

+0

私はむしろJavaの新しいですが、私はあなたが行( 'scrollPane)を参照していると思うものを理解しようとしています;'私はこれがjtableスクロール用だと思ったのですか?次に、テーブルクラスを初期化し、テーブルコンポーネントをメインのjPanelに追加します。どこが間違っていますか? –

答えて

1

JFrameを拡張しているようです。最上位レベルのコンテナ機能は使用しません。次に、パネルをJFrameにドロップするmain()を使用してJPanelを拡張する例を示します。

既存のJPanel

public class TablePanel 
{ 
    public static void addTableToPanel(JPanel jPanel, Vector rowData, Vector columnNames) 
    { 
    JTable jTable = new JTable(rowData, columnNames); 
    jTable.setFillsViewportHeight(true); 

    JScrollPane jScrollPane = new JScrollPane(jTable); 
    jScrollPane.setPreferredSize(new Dimension(300, 50)); 

    jPanel.add(jScrollPane); 
    } 

    public static void main(String[] args) throws Exception 
    { 
    SwingUtilities.invokeAndWait(new Runnable() 
    { 
     @Override 
     public void run() 
     { 
     Vector cols = new Vector(); 
     Vector rows = new Vector(); 
     Vector row1 = new Vector(); 

     cols.add("A"); 
     cols.add("B"); 
     cols.add("C"); 
     row1.add("1"); 
     row1.add("2"); 
     row1.add("3"); 
     rows.add(row1); 
     rows.add(row1.clone()); 
     rows.add(row1.clone()); 
     rows.add(row1.clone()); 

     JFrame frame = new JFrame("TableTest"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel jPanel = new JPanel(); 
     jPanel.setLayout(new BorderLayout(0, 0)); 
     TablePanel.addTableToPanel(jPanel, rows, cols); 

     frame.getContentPane().add(jPanel); 
     frame.pack(); 
     frame.setVisible(true); 
     } 
    }); 
    } 
} 
+0

あなたが作成したテーブルを既存のJpanelにどのように追加しますか? mainPanel = new javax.swing.JPanel();この行があると仮定します。 。あなたはmainPanelにテーブルを追加したいのですが、どうやってそれをしますか? (これは私が持っている問題であり、表示されていないためです)。あなたの例はテーブルを新しいウィンドウに表示します –

+0

拡張するのではなく、既存のJPanelを受け入れるようにコードを編集しました。既存のJPanelを使用している場合は、そのレイアウトに注意することをお勧めします。あなたのテーブルが見えない場合、またはそれが奇妙な方法で表示される場合は、おそらくレイアウトの問題です。 –

関連する問題