简体   繁体   English

JFrame组件未显示

[英]JFrame Components not showing up

I have a problem that the JFrame is not showing upmy components. 我有一个问题,JFrame没有显示我的组件。 When i opened the GasStationPanel in WindowBuilder it show well, but the MainFrame is show as a blank windows. 当我在WindowBuilder中打开GasStationPanel时,它显示效果很好,但MainFrame显示为空白窗口。 Please, I need you help here. 拜托,我需要你帮忙。 Thanks! 谢谢!

The JFrame code is: 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;
    }
}

The GasStationPanel Code: 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);
}

In short, you never add any components to your container. 简而言之,您永远不会向容器中添加任何组件。 For example, in your GasStationPanel code, perhaps you should try invoking add(Component) by passing in your JSplitPane s as an argument. 例如,在您的GasStationPanel代码中,您可能应该尝试通过传入JSplitPane作为参数来调用add(Component) For example: 例如:

add(splinterLeft, BorderLayout.CENTER);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM