2

私はMigLayoutの初心者なので、1つのJPanelに複数のJTableを追加する必要がありますが、複数のテーブルを追加しようとすると、最後のテーブルだけが表示され、他のテーブルはJScrollPaneの境界線だけにマークされます。私のコードは以下にあります。

 Test() {
    //Panels
    JPanel globalPanel = new JPanel(new MigLayout("fillx","[]","[]50[]"));
    JPanel topPanel = new JPanel (new MigLayout("fillx","40px[]15[grow]","40px[]"));
    JPanel tablePanel = new JPanel (new MigLayout("fillx","[center]","[]"));
    //Components
    JComboBox boxProj;
    JTable table;
    JScrollPane scroll;


    //Top Panel        
    topPanel.add(new JLabel("Project Name:"));
    String listString[] = {"test"};
    boxProj= new JComboBox(listString);
    topPanel.add(boxProj);

    //Table Panel
    //Tables
    table = new JTable();
    createTable(table); //my table

    //Adding Multiples Tables
    tablePanel.add( new JScrollPane(table),"growx,wrap,hmax 300");
    tablePanel.add( new JScrollPane(table),"growx,wrap,hmax 300");

    //Scroll to TablePanel
    scroll = new JScrollPane(tablePanel);
    scroll.setBorder(BorderFactory.createTitledBorder(null, "Project", TitledBorder.LEFT, TitledBorder.TOP, new Font("null", Font.BOLD, 12), Color.BLACK));
    scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

    //Global Panel
    globalPanel.add(topPanel, "dock north");
    JSeparator separator = new JSeparator();
    globalPanel.add(separator,"growx");
    globalPanel.add(scroll,"dock south, growx");

    getContentPane().add(globalPanel);
    pack();
    setSize(1024,768);
}

間違えた場合は訂正してください。

ありがとうございました!!

4

2 に答える 2

2

同じコンポーネントを 2 回追加しようとしているようです。コンポーネントは 1 つのコンテナーでのみ表示できます。

テーブル = 新しい JTable(); createTable(テーブル); //私のテーブル

//Adding Multiples Tables
tablePanel.add( new JScrollPane(table),"growx,wrap,hmax 300");
tablePanel.add( new JScrollPane(table),"growx,wrap,hmax 300");

試してみてください:

JTable table1 = new JTable();
JTable table2 = new JTable();
createTable(table1); //my table
createTable(table2);

//Adding Multiples Tables
tablePanel.add( new JScrollPane(table1),"growx,wrap,hmax 300");
tablePanel.add( new JScrollPane(table2),"growx,wrap,hmax 300");
于 2013-03-14T14:41:14.150 に答える
2

どの Swing コンポーネントも、親を 1 つだけ持つことができます。JTableここでは、同じものを 2 つの異なるJScrollPaneコンテナーに追加しています。その結果、最後の 1 つだけが表示されます。2 つのJTableコンポーネントを表示するには、2 つの別個のコンポーネントを作成する必要があります。

table2 = new JTable();
...
tablePanel.add(new JScrollPane(table2), "growx,wrap,hmax 300");  
于 2013-03-14T14:31:40.583 に答える