2013-04-23 81 views
0

我的代碼有什麼問題?名爲「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); 


    } 
} 
+3

如果您打破你的單片代碼到方法,你可能會發現你的問題更容易。 – 2013-04-23 16:48:39

回答

2

呼叫mainFrame.setVisible(true);運行程序。即,

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

這裏就是我得到:

enter image description here

+0

..並在此之前調用'pack();'。 :) – 2013-04-23 16:54:02

+0

非常感謝你! – user2311710 2013-04-23 17:20:54