ejemplo crear como java swing jframe

java - crear - El método... no está definido para el tipo JFrame



jpanel (1)

displayList es un método que has escrito en AirplaneGUI ¿por qué esperas que esté en JFrame ? Cambiar JFrame gui; a AirplaneGUI gui; y public AirplaneController(JFrame frame) para public AirplaneController(AirplaneGUI frame) .

Habiendo dicho eso, hay demasiados errores de compilación y clases faltantes para que pueda ejecutarlo.

Puede ser que necesite extender JFrame como public class AirplaneGUI extends JFrame{ . Dije "puede ser" porque no entiendo lo que estás tratando de hacer.

Intento crear una GUI con dos listas de menú, con 3 elementos en cada una. Mi problema es que cuando hago clic en un elemento, aparece el error "El método displayList (int, AirplaneList) no está definido para el tipo JFrame"

Código para 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); } }

El problema está aquí: gui.displayList(selection, list); y crea este error: Excepción en el hilo "AWT-EventQueue-0" java.lang.Error: Problema de compilación sin resolver: El método displayList (int, AirplaneList) no está definido para el tipo JFrame

Aquí está el código actual para 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; } }

He intentado cambiar la JFrame gui; en AirplaneController to AirplaneGUI gui; , que luego creó errores en AirplaneGUI.java:

javax.swing.JFrame no se puede convertir a AirplaneGUI

¿Cómo puedo arreglar esto?