方法...未定义类型JFrame [英] The method ... is undefined for type JFrame

查看:153
本文介绍了方法...未定义类型JFrame的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试用两个菜单列表制作一个gui,每个菜单中有3个项目。我的问题是,当我点击一个项目时,我收到一个错误方法displayList(int,AirplaneList)未定义类型JFrame

I'm trying to make a gui with two menu lists, with 3 items in each. What my problem is, is that when I click on an item, I get an error "The method displayList(int, AirplaneList) is undefined for the type JFrame"

代码for AirplaneController.java:

Code for 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(选择,列表); 并创建此错误:
线程AWT-EventQueue-0中的异常java.lang.Error:未解决编译问题:
方法displayList(int,AirplaneList)未定义类型JFrame

The problem is here: gui.displayList(selection, list); and creates this error: Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem: The method displayList(int, AirplaneList) is undefined for the type JFrame

这是AirplaneGUI.java的当前代码:

Here's the current code for 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中创建错误:

I've tried changing the JFrame gui; in AirplaneController to AirplaneGUI gui;, which then created errors in AirplaneGUI.java:

javax.swing.JFrame无法转换为AirplaneGUI

javax.swing.JFrame cannot be cast to AirplaneGUI

我该如何解决这个问题?

How can I fix this?

推荐答案

displayList 是一个用写的方法AirplaneGUI 为什么你期望它在 JFrame ?将 JFrame gui; 更改为 AirplaneGUI gui; public AirplaneController(JFrame frame)公共AirplaneController(AirplaneGUI框架)

displayList is a method you have written in AirplaneGUI why do you expect it to be in JFrame? Change JFrame gui; to AirplaneGUI gui; and public AirplaneController(JFrame frame) to public AirplaneController(AirplaneGUI frame).

说过编译错误太多了缺少课程让我能够运行它。

Having said that there are too many compilation errors and missing classes for me to be able to run it.

可能需要扩展JFrame,如公共类AirplaneGUI扩展JFrame {。我说可能是因为没有得到你想做的事。

May be you need extend JFrame like public class AirplaneGUI extends JFrame{ . I said "may be" because do not get what you are trying to do .

这篇关于方法...未定义类型JFrame的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆