2012-04-12 32 views
1

私は、画面上に印刷する必要があるオブジェクトのArrayListを持っています。 MainFrameクラスに追加されたJPanelを継承するクラスのメソッドを呼び出すリスナーとボタンがあります。別のクラスから呼び出すメソッド

これはAddOrderPanelというクラスで呼び出すメソッドです。

public void addLCheese(){ 
     BigDecimal price = new BigDecimal("8.99"); 
     CheesePizza largeCheese = new CheesePizza("Large Cheese/Tomato",price); 
     OrderItem laCheese = new OrderItem(largeCheese,1); 
     System.out.println(largeCheese.getDescription()+" "+largeCheese.getPrice()+" " +laCheese.testArray()); 
      JPanel order = new JPanel(); 
     order.setBackground(Color.blue); 
     order.setPreferredSize(new Dimension(800,50)); 
     add(order,BorderLayout.CENTER); 
    revalidate(); 

} 

そして、これは私のリスナーコードです:私はそれをしようとすると

 lCheese.addActionListener(new ActionListener(){ 
      @Override 
      public void actionPerformed(ActionEvent e) { 
AddOrderPanel orderPanel; 
       orderPanel.addLCheese(); 

      } 
     }); 

それはアイデア、NullPointerExceptionが返されますか?

マイパネルオブジェクト。

private JFrame myMainFrameObject; 
    AddOrderPanel(JFrame theMainFr){ 
    myMainFrameObject = theMainFr; 
      this.setLayout(new FlowLayout(FlowLayout.RIGHT)); 
     setBackground(Color.red); 
     setPreferredSize(new Dimension(800,0));  
    } 

答えて

1

あなたはorderPanel.addLCheese()を呼び出す前に、何にでもorderPanelを割り当てていません。あなたのリスナーに

1

は私AddOrderPanelのためのコードはフレームを必要とするので、私はそれを行うことはできません。この変更はJFrameのを取得するために行い、その後AddOrderPanel

lCheese.addActionListener(new ActionListener(){ 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      Component component = (Component) e.getSource(); 
      JFrame frame = (JFrame) SwingUtilities.getRoot(component); 
      AddOrderPanel orderPanel = new AddOrderPanel(frame); 
      orderPanel.addLCheese(); 

     } 
    }); 
+0

の新しいインスタンスを作成します。 @Edited Question – ChrisA

+0

@ChrisA:あなたの制約を反映するために私の答えを編集しました。 –

+0

私はあなたに非常に感謝します!:) – ChrisA

関連する問題