2013-03-19 46 views
-3

我不知道如何得到这个错误。我做了它,所以当我点击时间按钮时,timecombobox变得可见。我的代码在下面。我尝试了不同的方法,比如当按钮被点击时,我插入带有插入其中的组合框的时间面板。我的代码不工作的原因是什么?获取“AWT EVENTQueue-0”java .lang.nullpointerexception错误

import javax.swing.JOptionPane; 

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

public class events extends JFrame { 
// variables for JPanel 
private JPanel timePanel; 
private JButton timeButton; 
private JButton moneyButton; 
private JButton hotelButton; 
private JButton exitButton; 


public events() 
{ 




setLayout(new BorderLayout()); 

    JPanel buttonPanel = new JPanel(); 
    buttonPanel.setBackground(Color.RED); 
    add(buttonPanel,BorderLayout.WEST); 
    JPanel timePanel = new JPanel(); 
    timePanel.setBackground(Color.BLUE); 
    timePanel.setPreferredSize(new Dimension(320, 240)); 

    add(timePanel,BorderLayout.EAST); 

    Time timeObject = new Time(); 
     timeObject.SelectTime(); 
     timePanel.add(timeObject.gettimePanel()); 
     timeObject.gettimePanel().setVisible(false); 


    timeButton = new JButton("Time"); 
    buttonPanel.add(timeButton); 

    moneyButton = new JButton("Price"); 
    buttonPanel.add(moneyButton); 

    hotelButton = new JButton("Hotel"); 
    buttonPanel.add(hotelButton); 

    exitButton = new JButton("Exit"); 
    buttonPanel.add(exitButton); 


    buttontime clickTime = new buttontime(); 
    timeButton.addActionListener(clickTime); 




    } 

    //classes for Time 
public class buttontime implements ActionListener { //creating actionlistener for  clicking on timebutton to bring up a combobox 
    public void actionPerformed(ActionEvent clickTime) { 
      Time timeObject = new Time(); 
     timeObject.SelectTime(); 
     timePanel.add(timeObject.gettimePanel()); 
     timeObject.gettimePanel().setVisible(true); 


    } 
    } 






    public static void main (String args[]) { 
events mainmenu = new events(); //object is created 


mainmenu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
mainmenu.setSize(600,400); 
mainmenu.setVisible(true); 
mainmenu.setLayout(new BorderLayout()); 
mainmenu.setTitle("Travel Agent System"); 
mainmenu.setBackground(Color.BLUE); 

} 





    import javax.swing.JOptionPane; 

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

class Time 
{ 

    private JComboBox timeairportbox;//comboboxes declared 
    private String[] Airport = {"","East Midlands", "Birmingham", "Manchester", "Heathrow"};//array of airports declared 


public void SelectTime() { 



    //combobox objects created 
    timeairportbox = new JComboBox(Airport);//array is inserted into the JComboBox 
    timeairportbox.setVisible(false); // Combobox is placed in the timePanel 




} 

public JComponent gettimePanel() { 
    return timeairportbox; 
    } 

    } 




} 
+2

你有没有试过调试你的应用程序? – Kai 2013-03-19 12:46:58

+1

有没有人向你解释过,如果你遵循Java风格约定,你的代码更容易阅读和理解?这段代码太可怕了...... – 2013-03-19 12:56:55

回答

2

您是阴影events构造函数的变量timePanel,所以类的成员变量从来没有被分配,导致NPE。与

timePanel = new JPanel(); 

除了更换

JPanel timePanel = new JPanel(); 

Java naming conventions表明,类名称开头的大写,这将使eventsEvents

+1

不用客气,今后你可以发布一个[SSCCE](http://sscce.org/)并对代码进行格式化:) – Reimeus 2013-03-19 13:04:12