2016-04-28 414 views
-1

我的問題看起來有點愚蠢,但每次使用swing時,我都遇到了表問題。所以即時通訊工作在一個學校項目上,我需要用一個GridBagLayout將一些JTable添加到一個JPanel中,但是我看不到添加到我的面板的JTable。如何將JTable添加到JPanel

下面是代碼:

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(); 
    } 
} 

如果有人,有一些線索,這將是真正偉大的。

提前致謝。

回答

2
  1. 在添加組件以讓佈局管理器執行其作業之後,請勿調用setSize()而是pack()
  2. 首先將JTable添加到JScrollPane,然後將其添加到GUI。
  3. 最重要的是,不要在JFrame上調用setVisible(true),直到之後添加所有組件。

正常工作對我來說:

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); 
} 
+0

首先,感謝您抽出時間來回答我。所以我遵循你的指示。現在我可以看到JScrollPane的邊框了,如果我對它調用'setPreferedSize()',我猜。但是我無法看到帶有數據的表格。 –

+0

@SebastienMURE:你一定在做錯事,因爲它對我來說工作得很好。請參閱上面的編輯。 –

+0

是的,它似乎是我創建JScrollPane時的一個問題,現在一切正常,非常感謝。 –