【问题标题】:Multiple JTables in JPanel using MiglayoutJPanel 中使用 Miglayout 的多个 JTable
【发布时间】:2013-03-02 22:58:48
【问题描述】:

我是 MigLayout 的初学者,所以我需要在一个 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);
}

如果我犯了错误,请纠正我。

谢谢!!

【问题讨论】:

  • 别忘了accept an answer。它可以帮助未来的读者:)
  • 我仍然没有状态来验证答案。 '投票需要 15 声望',我只有 11。
  • +1 来提高你的声望 :)

标签: java swing jtable miglayout


【解决方案1】:

任何 Swing 组件只能有一个父级。在这里,您将相同的 JTable 添加到 2 个不同的 JScrollPane 容器中。结果是只显示最后一个。要显示 2 个 JTable 组件,您必须创建 2 个单独的组件。

table2 = new JTable();
...
tablePanel.add(new JScrollPane(table2), "growx,wrap,hmax 300");  

【讨论】:

  • 很好,成功了,谢谢!!!但是,如果我的 JPanel 中需要 N 个 JTables,我需要实例化 N 个 JTables ?!
【解决方案2】:

您似乎试图添加两次相同的组件。您只能在一个容器中显示一个组件:

table = new JTable(); 创建表(表); //我的桌子

//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");

【讨论】:

    猜你喜欢
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多