gpt4 book ai didi

java - 如何修复堆栈溢出错误

转载 作者:行者123 更新时间:2023-12-01 15:07:41 25 4
gpt4 key购买 nike

我创建了 3 个 JPanel 类和 1 个 JFrame 类。这 3 个 JPanel 类通过实例化相互连接(因为一个类的某些属性在另一个类中需要)。我想将所有 3 个 JPanel 类放入 JFrame 类,但我收到一条错误消息。

错误

 java.lang.StackOverflowError
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:244)
at javax.swing.UIDefaults.getUI(UIDefaults.java:751)
at javax.swing.UIManager.getUI(UIManager.java:989)
at javax.swing.JPanel.updateUI(JPanel.java:109)
at javax.swing.JPanel.<init>(JPanel.java:69)
at javax.swing.JPanel.<init>(JPanel.java:92)
at javax.swing.JPanel.<init>(JPanel.java:100)
at ComputerSeats.<init>(ComputerSeats.java:17)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)
at ComputerSeats.<init>(ComputerSeats.java:13)
at Student.<init>(Student.java:11)

ComputerSeats 类

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class ComputerSeats extends JPanel implements ItemListener
{
private JLabel seatNum;
private JRadioButton[] seat = new JRadioButton[10];
private ButtonGroup seatGroup = new ButtonGroup();
private boolean[] seatOccupied = new boolean[10];
private String str = "";
private int station=0, occupiedSeatCounter=0;
private Student stud = new Student();
private Monitor mtr = new Monitor();

public ComputerSeats()
{


setPreferredSize(new Dimension(200,200));
setBorder(BorderFactory.createLoweredBevelBorder());
setBackground (Color.yellow);
setLayout(null);
//SETS THE JPANEL THAT DISPLAYS STATION NUMBER OPTIONS

seatNum = new JLabel("Station Numbers: ");
seatNum.setLocation(60,90);
seatNum.setSize(600,400);
add(seatNum);

createSeatNumbers();
}

public void itemStateChanged(ItemEvent e)
{
for(int i=0 ; i<10 ; i++)
{
if(e.getSource() == seat[i])
station = (i+1);
}
}

public void createSeatNumbers()
{
int x=50,y=150;
for(int i=0 ; i<10 ; i++)
{
switch(i)
{
case 0: str = "1"; break;
case 1: str = "2"; break;
case 2: str = "3"; break;
case 3: str = "4"; break;
case 4: str = "5"; break;
case 5: str = "6"; break;
case 6: str = "7"; break;
case 7: str = "8"; break;
case 8: str = "9"; break;
case 9: str = "10"; break;
}
seat[i] = new JRadioButton(str);
seat[i].setSize(60,40);
seat[i].setLocation(x,y);
seat[i].addItemListener(this);
seat[i].setBackground(Color.green);
seatGroup.add(seat[i]);
add(seat[i]);
x=110;

if((i+1)%2==0)
{
x=50;
y=y+30;
}
}

for(int i=0 ; i<10 ; i++)
{
seatOccupied[i] = false;
}
}

public void occupySeat()
{
seatOccupied[station-1] = true;
for(JLabel jl: mtr.showArrayIdVal()) { jl.setText(stud.showField().getText()); }
seat[station-1].setBackground(Color.red);
occupiedSeatCounter++;
}

public void leaveSeat()
{
mtr.showArrayIdVal()[station-1].setText("Vacant Station");
seat[station-1].setBackground(Color.green);
seatOccupied[station-1] = false;
stud.showField().setText("");
}
public void showError(int num)
{
if(num == 0)
{
JOptionPane.showMessageDialog(null, "Select your Station Number", "ERROR!",JOptionPane.ERROR_MESSAGE);
}
else if(num == 1)
{
JOptionPane.showMessageDialog(null, "This Station is Vacant!", "ERROR!",JOptionPane.ERROR_MESSAGE);
}
else if(num == 2)
{
JOptionPane.showMessageDialog(null, "Station Occupied", "ERROR!",JOptionPane.ERROR_MESSAGE);
}

}

public int showStation()
{
return station;
}

public boolean getSeatOccupied()
{

return seatOccupied[station-1];
}

}

学生类

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Student extends JPanel implements ActionListener
{

private JLabel studNum;
private JTextField studNumTF;
private JButton logInB, logOutB;
private ComputerSeats compSeat = new ComputerSeats();

public Student()
{
//SET UP PANEL

setPreferredSize(new Dimension(80,200));
setBorder(BorderFactory.createLoweredBevelBorder());
setBackground (Color.yellow);
setLayout(null);

studNum = new JLabel("Enter Your Student Number: ");
studNum.setLocation(30,20);
studNum.setSize(200,100);

studNumTF = new JTextField(7);
studNumTF.setLocation(50,80);
studNumTF.setSize(120,30);

logInB = new JButton("Log In");
logInB.setSize(100,30);
logInB.setLocation(15,350);
logInB.setBackground(Color.orange);
logInB.addActionListener(this);

logOutB = new JButton("Log Out");
logOutB.setSize(100,30);
logOutB.setLocation(125,350);
logOutB.setBackground(Color.orange);
logOutB.addActionListener(this);

//ADD OBJECTS TO PANEL

add(studNum);
add(studNumTF);
add(logInB);
add(studNum);

}

public void actionPerformed(ActionEvent e)
{
//PERFORM OOPERATION AFTER CLICKING A BUTTON

if(e.getActionCommand() == "Log In")
{
logIn();
}

if(e.getActionCommand() == "Log Out")
{
logOut();
}
}

public JTextField showField()
{
return studNumTF;
}

public void logIn()
{

if(compSeat.showStation() == 0)
{
compSeat.showError(0);
}
else if(compSeat.getSeatOccupied() == true)
{
compSeat.showError(2);
}
else
{
compSeat.occupySeat();
}
}
public void logOut()
{
if(compSeat.showStation() == 0)
{
compSeat.showError(0);
}

else
{
compSeat.leaveSeat();
}
}
}

监控类

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Monitor extends JPanel{

private JLabel stationL, iDL, timeInL;
private JLabel[] stationA,idA,timeA;
private String str = "";


public Monitor()
{
//SET UP PANEL
setPreferredSize(new Dimension(80,100));
setBorder(BorderFactory.createLoweredBevelBorder());
setBackground (Color.yellow);
setLayout(null);
setLayout(null);


stationL = new JLabel("Station #", SwingConstants.CENTER);
iDL = new JLabel("Student Number");
timeInL = new JLabel("Time In");

stationL.setSize(100,20);
iDL.setSize(100,20);
timeInL.setSize(100,20);

stationL.setLocation(280,60);
iDL.setLocation(450,60);
timeInL.setLocation(630,60);

//ADD TO PANEL

add(stationL);
add(iDL);
add(timeInL);

//INSTANTIATION OF ARRAYS
stationA = new JLabel[10];
idA = new JLabel[10];
timeA = new JLabel[10];

displayFixedValues();
}

//METHOD THAT WILL DISPLAY THE FIRST VALUES OF THE MONITOR PANEL
public void displayFixedValues()
{

int y = 85;
for(int i=0 ; i<10 ; i++)
{
switch(i)
{
case 0: str = "1"; break;
case 1: str = "2"; break;
case 2: str = "3"; break;
case 3: str = "4"; break;
case 4: str = "5"; break;
case 5: str = "6"; break;
case 6: str = "7"; break;
case 7: str = "8"; break;
case 8: str = "9"; break;
case 9: str = "10"; break;
}
stationA[i] = new JLabel(str, SwingConstants.CENTER);
stationA[i].setSize(100,30);
stationA[i].setLocation(280,y);

idA[i] = new JLabel("Vacant Station");
idA[i].setSize(100,30);
idA[i].setLocation(450,y);

timeA[i] = new JLabel("00:00:00--");
timeA[i].setSize(100,30);
timeA[i].setLocation(630,y);
y = y+30;

add(stationA[i]);
add(idA[i]);
add(timeA[i]);
}
}

//METHODS THAT WILL RETURN THE VALUE OF THE OBJECTS CREATED IN THIS CLASS
public JLabel[] showArrayStationVal()
{
return stationA;
}
public JLabel[] showArrayIdVal()
{
return idA;
}
public JLabel[] showArrayTimeVal()
{
return timeA;
}
public JLabel showStationVal()
{
return stationL;
}
public JLabel showIdVal()
{
return iDL;
}
public JLabel showTimeVal()
{
return timeInL;
}
}

MonitoringFrame类

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MonitoringFrame extends JFrame
{

private JPanel monitor, seats, student, time;

public MonitoringFrame()
{



Monitor monitor = new Monitor();
ComputerSeats seats = new ComputerSeats();
Student student = new Student();

Container pane = getContentPane();

pane.add(monitor);
pane.add(seats);
pane.add(student);

setVisible(true);
setLayout(null);
setSize(400,300);
pack();


}

public static void main(String[] args)
{

MonitoringFrame fr = new MonitoringFrame();

}
}

最佳答案

解释其实很简单:

Student 类有以下字段声明:

  private ComputerSeats compSeat = new ComputerSeats();

ComputerSeats 类具有以下字段声明:

  private Student stud = new Student();

因此,当您创建学生时,会通过创建 ComputerSeat 来初始化 compSeat,而 ComputerSeat 则通过创建 Student 来初始化 stud code> 通过创建 ComputerSeat 来初始化 compSeat...等等,直到堆栈溢出。

这是一个递归循环。

关于java - 如何修复堆栈溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12758391/

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