如何将JTable添加到JPanel

时间:2016-04-28 16:12:06

标签: java swing jtable gridbaglayout

我的问题看起来有点愚蠢,但每次我使用swing,我都会遇到问题。所以我正在研究一个学校项目,我需要将一些JTable添加到一个带有GridBagLayout的JPanel,但我看不到JTable im添加到我的面板。

以下是代码:

public class MainView extends JFrame {

    private static Dimension dimensionFenetre = new Dimension(1980, 1000);
    Object[][] team = {
        {"France", "80"},
        {"Germany", "80"},
        {"Italy", "80"},
        {"England", "80"}
};

String  titleColumn[] = {"Team", "Overall"};

public MainView() {

    JPanel panelFenetre = new JPanel(new GridBagLayout());
    add(panelFenetre);
    setVisible(true);
    panelFenetre.setVisible(true);
    setSize(dimensionFenetre);

    panelFenetre.add(getTable1(), getTable1Constraints());
}

private JTable getTable1() {

    JTable table = new JTable(team, titleColumn);
    table.setVisible(true);

    return table;
}

private GridBagConstraints getTable1Constraints() {

    GridBagConstraints gbcTable1 = new GridBagConstraints(
            0, 1,
            1, 1,
            1, 1,
            GridBagConstraints.CENTER,
            GridBagConstraints.NONE,
            new Insets(0, 0, 0, 0),
            0, 0);

    return gbcTable1;
  }
}

一个简单的主要:

public class Main {

public static void main(String[] args) {
    MainView mainView = new MainView();
  }
}

如果有人,有一些线索,那将会非常棒。

先谢谢。

1 个答案:

答案 0 :(得分:2)

  1. 在添加组件以让布局管理员完成工作后,请不要致电setSize(),而是pack()
  2. 首先将JTable添加到JScrollPane,然后将其添加到GUI。
  3. 最重要的是,请不要在JFrame上致电setVisible(true),直到 添加所有组件为止。
  4. 对我来说很好:

    public MainView() {
        JPanel panelFenetre = new JPanel(new GridBagLayout());
        add(panelFenetre);
    
        // setVisible(true);
        // panelFenetre.setVisible(true);
        // setSize(dimensionFenetre);
    
        panelFenetre.add(new JScrollPane(getTable1()), getTable1Constraints());        
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }