2013-09-08 8 views
0

JFrame이 구성 요소를 표시하지 않는 문제가 있습니다. WindowBuilder에서 GasStationPanel을 열었을 때 표시가 잘되지만 MainFrame이 빈 창으로 표시됩니다. 제발, 여기서 도와 줘. 감사합니다.JFrame 구성 요소가 표시되지 않습니다.

JFrame의 코드는 다음과 같습니다

public class MainFrame extends JFrame { 
    private GasStationPanel pnlMainGasStation; 

    public MainFrame() throws SecurityException, IOException { 
     try {    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
      SwingUtilities.updateComponentTreeUI(this); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     getContentPane().setLayout(new BorderLayout()); 
     this.pnlMainGasStation = new GasStationPanel("all cars","pumps","coffee"); 
     this.add(pnlMainGasStation, BorderLayout.CENTER); 
     setLocationRelativeTo(null); 

     setTitle("GasStation"); 
     addWindowListener(new WindowAdapter() { 
      @Override 
      public void windowClosing(WindowEvent e) { 
       Utils.closeApplication(MainFrame.this); 
      } 
     }); 

     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
     Dimension frameSize = new Dimension(); 
     frameSize.setSize(screenSize.width*0.7, screenSize.height*0.9); 
     setSize(frameSize); 
     setVisible(true);  
    } 
    public GasStationPanel getMainPanel() { 
     return pnlMainGasStation; 
    } 
} 

GasStationPanel 코드 : 한마디로

public class GasStationPanel extends JPanel { 
private JSplitPane splinterRight, splinterLeft; 
private AllCarsPanel allCarsPanel; 
private FuelPumpListPanel fuelPumpsListPanel; 
private CoffeeHousePanel coffeeHousePanel; 

private List<GasStationController> allListeners; 

public AllCarsPanel getAllCarsPanel() { 
    return allCarsPanel; 
} 

public FuelPumpListPanel getFuelPumpsListPanel() { 
    return fuelPumpsListPanel; 
} 

public CoffeeHousePanel getCoffeeHousePanel() { 
    return coffeeHousePanel; 
} 

public GasStationPanel(String allCarsStr, String fuelPumpsListStr, 
     String coffeeHousePanelStr) throws SecurityException, IOException { 
    // Init Listeners List 
    this.allListeners = new ArrayList<GasStationController>(); 
    // Layout and size 
    setLayout(new BorderLayout()); 

    // Build panels 
    allCarsPanel = new AllCarsPanel(); 
    fuelPumpsListPanel = new FuelPumpListPanel(); 
    coffeeHousePanel = new CoffeeHousePanel(); 

    // Split the screen to three 
    splinterRight = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); 
    splinterLeft = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); 
    splinterLeft.setLeftComponent(allCarsPanel); 
    splinterLeft.setRightComponent(fuelPumpsListPanel); 
    splinterRight.setLeftComponent(splinterLeft); 
    splinterRight.setRightComponent(coffeeHousePanel); 
} 

public void registerListener(GasStationController gasStationController) { 
    this.allListeners.add(gasStationController); 
} 

답변

2

, 당신이 당신의 컨테이너에 구성 요소를 추가하지 않습니다. 예를 들어 GasStationPanel 코드에서 JSplitPane을 인수로 전달하여 add(Component)을 호출해야합니다. 예 :

add(splinterLeft, BorderLayout.CENTER); 
+0

감사합니다. 하지만'GasStationPanel'에서는'JSplitPane left and right'에 컴포넌트를 추가합니다. 코드 예 : 'splinterLeft.setLeftComponent (allCarsPanel); ' –

+0

'JSplitPane'을 컨테이너에 추가하지 않고 있습니다. –

관련 문제