2015-05-04 3 views
0

Я пытаюсь сделать gui с двумя списками меню, по 3 элемента в каждом. Что моя проблема в том, что, когда я нажимаю на элемент, я получаю ошибку «Метод DisplayList (INT, AirplaneList) не определено для типа JFrame»Метод ... не определен для типа JFrame

Код для AirplaneController.java:

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JFrame; 
import javax.swing.JOptionPane; 

import java.util.StringTokenizer; 

public class AirplaneController implements ActionListener{ 
     public static StringTokenizer myTokens; //Declares a string tokenizer. 
     public static String[] animals; 
     public static int i;//Total including error. 
     public static int a; //Total strings 

     final static String[] DATA = 
      {... 
      }; 
     final int Cargo = 0; 
     final int Passenger = 1; 
     final int Business = 2; 
     final int All= 4; 
     int count=0; 
     AirplaneList close= new AirplaneList(); 
     AirplaneList end=new AirplaneList(); 

     CargoJet Cairplanes[]= new CargoJet[5]; 
     BusinessJet Bairplanes[]= new BusinessJet[5]; 
     PassengerJet Pairplanes[]= new PassengerJet[5]; 
    JFrame gui; 

    /** 
    * One-argument constructor that sets the default JFrame and sets 
    * to listen on buttons of that frame. 
    * @param frame 
    */ 
    public AirplaneController(JFrame frame) { 
     gui = frame; 
     //gui.setButtonListener; 
    } 

    public void runList(){ 
     Airplane parts2 []= new Airplane[8]; 
     String hate[]= new String [80]; 
     //AirplaneList close= new AirplaneList(); 
      i=0; 
      animals = new String[80]; 

     for(int i=0; i<8; i++){ 
      myTokens = new StringTokenizer(DATA[i],","); 

      while (myTokens.hasMoreTokens()) { 

      animals[a]=myTokens.nextToken(); 
      hate[a]=animals[a]; 
      a++; 
      } 
     } 
      a=0; 
      int k=0; 
      int z=0; 
      int d=0; 
      for(i=0; i<80; i+=10){ 
       if(hate[i].equals("B")){ 
        Bairplanes[k]= new BusinessJet(hate[i],hate[i+1],hate[i+2],hate[i+3],hate[i+4],hate[i+5],hate[i+6],hate[i+7],hate[i+8],hate[i+9]); 
        parts2[d]=Bairplanes[k]; 
        d++; 
        k++; 
        count++; 
       } 
       if(hate[i].equals("C")){ 
        Cairplanes[a]= new CargoJet(hate[i],hate[i+1],hate[i+2],hate[i+3],hate[i+4],hate[i+5],hate[i+6],hate[i+7],hate[i+8],hate[i+9]);// hate[i]="Catastrophy"; 
        parts2[d]=Cairplanes[k]; 
        d++; 
        a++; 
        count++; 
        } 
       if(hate[i].equals("P")){ 
        Pairplanes[z]= new PassengerJet(hate[i],hate[i+1],hate[i+2],hate[i+3],hate[i+4],hate[i+5],hate[i+6],hate[i+7],hate[i+8],hate[i+9]);// hate[i]="Catastrophy"; 
        parts2[d]=Pairplanes[k]; 
        d++; 
        z++; 
        count++; 
       } 

      } 

      for(i=0; i<8; i++){ 
       System.out.println(parts2[i]+" Parts"); 
       close.append(parts2[i]); 
      } 

      System.out.println(close); 


    } 

    public void createList(int selection) { 

     int numPlanes = DATA.length; 
     AirplaneList list = new AirplaneList(); 
     Airplane parts2 []= new Airplane[8]; 
     String hate[]= new String [80]; 
     //AirplaneList close= new AirplaneList(); 
      i=0; 
      animals = new String[80]; 

     for(int i=0; i<8; i++){ 
      myTokens = new StringTokenizer(DATA[i],","); 

      while (myTokens.hasMoreTokens()) { 

      animals[a]=myTokens.nextToken(); 
      hate[a]=animals[a]; 
      a++; 
      } 
     } 
      a=0; 
      int k=0; 
      int z=0; 
      int d=0; 
      for(i=0; i<80; i+=10){ 
       if(hate[i].equals("B")){ 
        Bairplanes[k]= new BusinessJet(hate[i],hate[i+1],hate[i+2],hate[i+3],hate[i+4],hate[i+5],hate[i+6],hate[i+7],hate[i+8],hate[i+9]); 
        parts2[d]=Bairplanes[k]; 
        d++; 
        k++; 
        count++; 
       } 
       if(hate[i].equals("C")){ 
        Cairplanes[a]= new CargoJet(hate[i],hate[i+1],hate[i+2],hate[i+3],hate[i+4],hate[i+5],hate[i+6],hate[i+7],hate[i+8],hate[i+9]);// hate[i]="Catastrophy"; 
        parts2[d]=Cairplanes[k]; 
        d++; 
        a++; 
        count++; 
        } 
       if(hate[i].equals("P")){ 
        Pairplanes[z]= new PassengerJet(hate[i],hate[i+1],hate[i+2],hate[i+3],hate[i+4],hate[i+5],hate[i+6],hate[i+7],hate[i+8],hate[i+9]);// hate[i]="Catastrophy"; 
        parts2[d]=Pairplanes[k]; 
        d++; 
        z++; 
        count++; 
       } 

      } 

     for (int i = 0; i < numPlanes; i++) { 
      switch (selection) 
      { 
      case Business: 
       list.append(Bairplanes[i]); 
       break; 
      case Passenger: 
       list.append(Pairplanes[i]); 
       break; 
      case Cargo: 
       list.append(Cairplanes[i]); 
      default: 
       list.insert(parts2[i]); 
      } 
      gui.displayList(selection, list); // PROBLEM HERE!! 
     } 
    } 
    //@Override 


    /** 
    * Create a LinkedList of airplane objects either by append, prepend or insert. 
    * And display the LinkedList on the GUI. 
    * 
    * @param selection  given order of the LinkedList 
    *      0 for APPEND, 1 for PREPEND, 2 for INSERT 
    */ 

    /*public AirplaneList createList(int selection) { 
     gui.displayList(); 

     if(selection==All) return close; 
     return close; 
    }*/ 


     //gui.displayList(selection, close.toString()); 

    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     String item = arg0.getActionCommand(); 
     if (item.equals("Start")){ 
      createList(All); 

     } 
      else if(item.equals("Clear")){ 

     } 

     else if (item.equals("Passenger")){ 
      createList(Passenger); 

     } 
     else if(item.equals("Business")){ 
      createList(Business); 
     } 
     else if(item.equals("Cargo")){ 
      createList(Cargo); 
     } 
     else 
      System.exit(0); 

} 

    } 

проблема здесь: gui.displayList(selection, list); и создает эту ошибку: исключение в потоке «АВТ-EventQueue-0» java.lang.Error: Нерешенные проблемы компиляции: метод DisplayList (интермедиат, AirplaneList) не определено для типа JFrame

Введите текущий код для AirplaneGUI.java:

import java.awt.*; 

import javax.swing.*; 
import javax.swing.border.Border; 

public class AirplaneGUI { 
    public static void main(String[] args) { 

    initialize(); 

    } 
    //JButton[] buttons; 
    private JMenuBar menuBar; 
    private JMenuItem item; 
    JFrame frame; 
    final Color[] colors = {Color.blue, Color.yellow, Color.green}; 
    JTextArea[] textAreas; 
    final int NUM_LISTS = 3; 
    final String[] LIST = {"passenger", "cargo", "bussiness"}; 
    JTextArea spite; 

    public static void initialize() { 

     JFrame frame = new JFrame(); 
     frame.setTitle("flight schedule"); 
     frame.setSize(250, 250); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(500, 500); 

     AirplaneController listener = new AirplaneController(frame); 
     listener.runList(); 
     JMenuBar menuBar = new JMenuBar(); 

     JMenu menu = new JMenu("File"); 
     JMenuItem startItem = new JMenuItem("Start"); 
     startItem.addActionListener(listener); 
     menu.add(startItem); 

     JMenuItem clearItem = new JMenuItem("Clear"); 
     clearItem.addActionListener(listener); 
     menu.add(clearItem); 

     JMenuItem exitItem = new JMenuItem("Exit"); 
     exitItem.addActionListener(listener); 
     menu.add(exitItem); 

     JMenu menu1 = new JMenu("Filter"); 

     JMenuItem passengerItem = new JMenuItem("Passenger"); 
     passengerItem.addActionListener(listener); 
     menu1.add(passengerItem); 
     //frame.setBackground(Color.blue); 


     JMenuItem bussinessItem = new JMenuItem("Business"); 
     bussinessItem .addActionListener(listener); 
     menu1.add(bussinessItem); 
     //frame.setBackground(Color.yellow); 


     JMenuItem cargoItem = new JMenuItem("Cargo"); 
     cargoItem.addActionListener(listener); 
     menu1.add(cargoItem); 
     //frame.setBackground(Color.green); 

     menuBar.add(menu); 
     menuBar.add(menu1); 


     Container pane = frame.getContentPane(); 
     frame.setJMenuBar(menuBar); 
     frame.setVisible(true); 

    } 

    public void setupDisplayPanel() { 

     Border squareBorder = BorderFactory.createLineBorder(Color.BLACK, 0); 
     textAreas = new JTextArea[NUM_LISTS]; 
     for (int i = 0; i < NUM_LISTS; ++i) { 
      textAreas[i] = new JTextArea(LIST[i] + "\n"); 
      textAreas[i].setBorder(squareBorder); 
      textAreas[i].setBackground(colors[i]); 
} 

    } 

    public void displayList(int selection, AirplaneList result) { 
     spite.append(result.toString()); 
    } 

    public void deleteList(){ 
     spite=null; 
    } 
} 

Я попытался изменить JFrame gui; в AirplaneController к AirplaneGUI gui;, который затем созданной ошибки в AirplaneGUI.java:

javax.swing.JFrame не может быть приведен к AirplaneGUI

Как я могу исправить это?

+1

'gui' - это экземпляр' JFrame', а не 'AirplaneGUI' ... – MadProgrammer

+0

*« Неразрешенная проблема компиляции »* В стороне. Решите проблемы с компиляцией * перед тем, как попытаться запустить код! –

+0

@MadProgrammer - я пробовал это, а затем мне пришлось сделать бросок, который мне пришлось изменить для параметра «public AirplaneController (JFrame frame)» на «public AirplaneController (AirplaneGUI frame)», что привело к ошибкам в AirplaneGUI. java – Imnotanerd

ответ

3

displayList это метод, который вы написали в AirplaneGUI. Почему вы ожидаете, что оно будет в JFrame? Изменить JFrame gui; на AirplaneGUI gui; и public AirplaneController(JFrame frame) на public AirplaneController(AirplaneGUI frame).

Сказав, что для меня слишком много ошибок компиляции и недостающих классов.

Возможно, вам необходимо расширить JFrame как public class AirplaneGUI extends JFrame{. Я сказал «может быть», потому что не понимаю, что вы пытаетесь сделать.

+0

Я сделал все это, что привело к следующей ошибке: javax.swing.JFrame не может быть передан в AirplaneGUI – Imnotanerd

+1

@Imnotanerd 'AirplaneGUI' не является экземпляром' JFrame', что делает очевидным, что он не может быть cast (извините, но это просто так). Вам нужно изменить свой дизайн, чтобы лучше соответствовать вашим требованиям – MadProgrammer

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