gpt4 book ai didi

java - JFrame 类型的方法...未定义

转载 作者:行者123 更新时间:2023-12-01 22:20:11 25 4
gpt4 key购买 nike

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

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); 并创建此错误:线程“AWT-EventQueue-0”java.lang.Error 中出现异常: Unresolved 编译问题: JFrame 类型未定义方法 displayList(int, AirplaneList)

这是 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;
}
}

我尝试将 AirplaneController 中的 JFrame gui; 更改为 AirplaneGUI gui;,然后在 AirplaneGUI.java 中创建了错误:

javax.swing.JFrame 无法转换为 AirplaneGUI

我该如何解决这个问题?

最佳答案

displayList 是您在 AirplaneGUI 中编写的方法,为什么您希望它出现在 JFrame 中?将 JFrame gui; 更改为 AirplaneGUI gui; 并将 public AirplaneController(JFrame frame) 更改为 public AirplaneController(AirplaneGUI frame) .

话虽如此,有太多编译错误和缺少类,我无法运行它。

可能您需要像 public class AirplaneGUI extends JFrame{ 一样扩展 JFrame 。我说“可能是”是因为没有得到你想要做的事情。

关于java - JFrame 类型的方法...未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30021635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com