0

私は、多くのグラフィカルな変更が行われているJavaでプログラムを書いています。その結果、stackoverflowexception が発生します。cmd で Xss コマンドを使用することによって解決された多くの問題を見てきましたが、この特定の問題は非常に永続的です。私はIDEを使用しているので、-Xssで解決しようとすると、noclassdef foundエラーや、一般的に「javac」が「シンボルが見つかりません」ラントでソースコードをコンパイルすることを拒否するなどの冗長な問題が発生します。プログラム コードは少し長いので、このような問題に遭遇したことがある人がいて、解決策を共有してくれるかどうか疑問に思っていました。ありがとうございました。

public void updateTable()
{
    for(int p1Finder = 0; p1Finder < playerReference.length; p1Finder++)   //for loop to locate the playerReference associated with P1
    {
        if(update.getP1Name().equalsIgnoreCase(playerReference[p1Finder].getName()))    //p1 reference found
        {
            if(update.getP1Score() > update.getP2Score())   //If the player on the left (P1) wins
            {
                playerReference[p1Finder].setPlays();
                playerReference[p1Finder].setWins();
                playerReference[p1Finder].setGoalsFor(update.getP1Score());
                playerReference[p1Finder].setGoalsAgainst(update.getP2Score());
                playerReference[p1Finder].setGoalDifference();
                playerReference[p1Finder].setPoints();
            }

            else if(update.getP1Score() < update.getP2Score())   //If the player on the left (P1) loses
            {

            }
            else    //if the game ends in a draw
            {

            }
        }

        repaint();
    }
}

上記の方法は、特定のスコアで動作し、リーグ テーブルを再描画することになっています。テーブル内のすべてが描画されます (つまり、Graphics メソッドを使用して)。私のプログラムのpaintComponentメソッドは以下の通りです。

protected void paintComponent(Graphics ink)
{
    super.paintComponent(ink);
    Font decorativeFont = new Font("Harrington", Font.BOLD, 30);
    Font boldFont = new Font("", Font.BOLD ,20);
    Font normalFont = new Font("", Font.PLAIN ,18); 
    ink.setFont(decorativeFont);
    ink.setColor(Color.BLACK);

    int yStars = 60;    //y coordinate for the decorative stars
    int xStars = 65;    //x coordinate for the decorative stars

    int countStars = 0;

    //Draw the title of the football league 
    ink.drawString("NJENGA  FOOTBALL  LEAGUE", 115, 30);

    //draw the decorative stars below the title
    while(countStars < 55)
    {
        ink.drawString("*", xStars, yStars);
        xStars = xStars + 10;
        countStars++;
    }

    //remove decorative font and set the normal font
    ink.setFont(boldFont);

    //draw the fields that are used on the table ie.player, plays, wins etc
    //use for loop
    int xFields = 0;    //x coordinate for the fields string names
    int yFields = 80;    //y coordinate for the fields string names        
    for(int counter = 0; counter < fieldNames.length; counter++)
    {
        ink.drawString(fieldNames[counter], xFields, yFields);
        if(counter == 0)
        {
            xFields = xFields + 150;
        }
        else
        {
            xFields = xFields + 73;
        }
    } 

    //draw a blue line between the fields and the records
    ink.setColor(Color.BLUE);
    ink.fillRect(0, 90, getWidth(), 5);

    //draw the player names and data into the table
    ink.setFont(normalFont);
    ink.setColor(Color.BLACK);
    int xRecord;
    int yRecord = 140;
    for(int counter = 0; counter < playerReference.length; counter++)
    {
        xRecord = 0;
        ink.drawString(playerReference[counter].getName().toUpperCase(), xRecord, yRecord); //draw the player name
        xRecord = xRecord + 153;    //increase the xCoordinate to facilitate proper drawing of next field

        ink.drawString((playerReference[counter].getPlays()+""), xRecord, yRecord); //draw the player plays
        xRecord = xRecord + 73;     //increase the xCoordinate to facilitate proper drawing of next field

        ink.drawString((playerReference[counter].getWins()+""), xRecord, yRecord);  //draw the player wins
        xRecord = xRecord + 73;     //increase the xCoordinate to facilitate proper drawing of next field

        ink.drawString((playerReference[counter].getDraws()+""), xRecord, yRecord); //draw the player draws
        xRecord = xRecord + 73;     //increase the xCoordinate to facilitate proper drawing of next field

        ink.drawString((playerReference[counter].getLosses()+""), xRecord, yRecord);    //draw the player losses
        xRecord = xRecord + 73;     //increase the xCoordinate to facilitate proper drawing of next field

        ink.drawString((playerReference[counter].getGoalsFor()+""), xRecord, yRecord);  //draw the player goals scored
        xRecord = xRecord + 73;     //increase the xCoordinate to facilitate proper drawing of next field

        ink.drawString((playerReference[counter].getGoalsAgainst()+""), xRecord, yRecord);  //draw the player goals conceeded
        xRecord = xRecord + 73;     //increase the xCoordinate to facilitate proper drawing of next field

        ink.drawString((playerReference[counter].getGoalDifference()+""), xRecord, yRecord);    //draw the player goal difference
        xRecord = xRecord + 73;     //increase the xCoordinate to facilitate proper drawing of next field

        ink.drawString((playerReference[counter].getPoints()+""), xRecord, yRecord);    //draw the player points
        yRecord = yRecord + 50;     //increase the yCoordinate to facilitate proper drawing of next record
    }

    //draw a blue line between the fields and the records
    ink.setColor(Color.BLUE);
    ink.fillRect(0, yRecord, getWidth(), 5);
}

プログラムには4つのクラスがあります。問題がここにあるのか、それとも別の場所にあるのかはわかりませんが、始めるには良い場所だと思います。

4

0 に答える 0