2012-04-12 5 views
1

У меня есть ArrayList объектов, которые нужно распечатать на экране. У меня есть кнопка и слушатель, который должен вызывать метод в классе, который расширяет JPanel, который добавляется в класс MainFrame.Метод вызова из другого класса

Это метод, который я хочу вызвать в классе 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, идеи?

My Panel Object.

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

ответ

1

Вы не назначая orderPanel ни к чему перед вызовом orderPanel.addLCheese().

1

В прослушивателе сделать эти изменения, чтобы получить 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

Я не могу этого сделать, так как код для моего AddOrderPanel требует кадра. @Edited Вопрос – ChrisA

+0

@ChrisA: Отредактировал мой ответ, чтобы отразить ваше ограничение. –

+0

Огромное вам спасибо! – ChrisA

Смежные вопросы