java - 我的一个面板没有显示

标签 java swing layout-manager grid-layout

我的代码有什么问题吗?当我运行程序时,名为“leftPanel”的面板未显示,而“flightPanel”

        import javax.swing.*;
        import java.awt.*;
        import java.awt.event.ActionEvent;
        import java.awt.event.ActionListener;


    public class TravelAgentSystem {

    public static void main(String[] args){

        JFrame mainFrame = new JFrame();
        mainFrame.setLayout(new BorderLayout());
        mainFrame.setTitle("Main Menu");
        mainFrame.setVisible(true);
        mainFrame.setSize(500,500);
        mainFrame.setLocationRelativeTo(null);
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel flightPanel = new JPanel();
        flightPanel.setLayout(new GridLayout(2,2));


        JButton timeb, priceb, hotelb, exitb;
        timeb = new JButton("Time");
        priceb = new JButton ("Price");
        hotelb = new JButton ("Hotels Menu");
        exitb = new JButton ("Exit Program");

        class buttonHandler implements ActionListener{

            public void actionPerformed(ActionEvent event) {
                JButton clickedButton = (JButton)event.getSource();
                String buttonText = clickedButton.getText();
                if (buttonText.equals("Exit Program")) {System.exit(0);}
            }

        }

        buttonHandler handler = new buttonHandler();

        exitb.addActionListener(handler);

        flightPanel.add(timeb);
        flightPanel.add(priceb);
        flightPanel.add(hotelb);
        flightPanel.add(exitb);


        mainFrame.add(flightPanel, BorderLayout.CENTER);

        JPanel travelPanel = new JPanel();
        travelPanel.setLayout(new GridLayout(2,2));
        travelPanel.setVisible(true);

        JPanel timePanel = new JPanel();
        timePanel = new JPanel();
        timePanel.setLayout(new GridLayout(2,1));
        timePanel.setVisible(true);

        JPanel leftPanel = new JPanel();
        leftPanel.setLayout(new GridLayout(2,1));
        leftPanel.setVisible(true);

        JLabel Lfrom, Lto, LDeparture;
        Lfrom = new JLabel("From");
        Lto = new JLabel("To");
        LDeparture = new JLabel("Departure Date (DD/MM/YY)");

        String[] fromOptions = {"East Midlands","Birmingham","Heathrow","Manchester"};
        String[] toOptions = {"New York", "Dahab", "Rome", "Sydney", "Tokyo"};

        JComboBox fromDest = new JComboBox(fromOptions);
        JComboBox toDest = new JComboBox(toOptions);

        JPanel datePanel = new JPanel();
        datePanel.setLayout(new FlowLayout());   // So i can fix size of dateField
        JTextField dateField = new JTextField();
        dateField.setPreferredSize(new Dimension(100,20));
        datePanel.add(dateField);

        travelPanel.add(Lfrom);
        travelPanel.add(fromDest);
        travelPanel.add(Lto);
        travelPanel.add(toDest);

        timePanel.add(LDeparture);
        timePanel.add(datePanel);

        leftPanel.add(travelPanel);
        leftPanel.add(timePanel);

        mainFrame.add(leftPanel, BorderLayout.EAST);


    }
}

最佳答案

最后调用mainFrame.setVisible(true);。即,

mainFrame.add(leftPanel, BorderLayout.EAST);
    mainFrame.setVisible(true);

这是我得到的:

enter image description here

关于java - 我的一个面板没有显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16174769/

相关文章:

java - 如何在 cloudfoundry/类似的 PaaS 上模拟持久文件系统?

java - 在命令提示符或 Eclipse 中制作 java 项目(带有一些类)的 .jar 文件?

java - 将多个按钮设置为禁用

java - 在 JComboBox 中实现最近使用或 Collection 夹下拉列表

java - 如何让JSplitPane中的JTabbedPane填满整个窗口?

java - 调用先前方法中实例化的对象的方法 (Java)

java - 无法从 GoogleWeather API 获取内容长度

java - 如何在面板上绘制分隔符 (GridBagLayout)

java - Swing:如何创建不使用布局的可滚动 JPanel 列表

java - 两个并排的组件如何使一个组件占用尽可能少的空间?