代码之家  ›  专栏  ›  技术社区  ›  Mat Kelly

如何在JFrame中显示两个JTable

  •  2
  • Mat Kelly  · 技术社区  · 15 年前

    我想要在一个窗口中显示两个jTables。目前,我只能使用以下命令显示其中一个表:

    JTable table1 = makeTable(1);
    JTable table2 = makeTable(2);
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    JScrollPane scrollPane1 = new JScrollPane(table1);
    JScrollPane scrollPane2 = new JScrollPane(table2);
    frame.add(scrollPane1, BorderLayout.CENTER);
    frame.validate();
    frame.add(scrollPane1, BorderLayout.CENTER);
    //frame.add(scrollPane2, BorderLayout.CENTER);
    frame.setSize(700, 500);
    
    frame.setVisible(true);
    frame.validate();
    

    使用Swing显示多个表的最简单方法是什么(尽管方向是不可逆的)?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Prine    15 年前

    不能将这两个jtable都添加到borderlayout中的同一位置。

    您可以执行以下操作:

    frame.add(scrollPane1, BorderLayout.CENTER);
    frame.add(scrollPane2, BorderLayout.SOUTH);
    frame.validate();
    
        2
  •  2
  •   Mat Kelly    15 年前

    在普林的帮助下,我找到了一个满足我需要的解决方案。对于任何寻求基本方案以实现这种布局的人:

    JTable table1 = makeTable(1);
    JTable table2 = makeTable(2);
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container c = frame.getContentPane();
    c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));
    c.add(table1.getTableHeader());
    c.add(table1);
    c.add(table2.getTableHeader());
    c.add(table2);
    frame.pack();
    frame.setVisible(true);