Applet错误 - java.lang.reflect.InvocationTargetException

时间:2011-08-23 22:55:39

标签: java browser applet invocationtargetexception

我以applet的形式制作游戏。所以是的,当我尝试在我的浏览器中运行这个小程序时,我得到一个错误,当我点击它的详细信息时说“java.lang.reflect.InvocationTargetException”。这是我的代码,我相信没有人会窃取任何代码。如何让它消失,我可以运行它?

package applettest;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.net.*;
import javax.imageio.ImageIO;
import javax.swing.*;

public class NewApplet extends JApplet {

String string1 = ""; //Used in the LOGINCHECK (Username)
String string2 = ""; //Used in the LOGINCHECK (Password)
////////////////////////////////////////////////////////////////////////////
JPanel startScreen = new JPanel(); //The JPanel for the player's START SCREEN
JLabel usernameLabel = new JLabel("Username:");//Creating & initializing a new JLabel.
JLabel passwordLabel = new JLabel("Password:");//Creating & initializing a new JLabe.
JTextField username = new JTextField();//Creating & initializing a new JTextField.
JTextField password = new JTextField();//Creating & initializing a new JTextField.
JButton start = new JButton("  Start  ");//Creating & initializing a new button.
JButton startNew = new JButton("  Start New Game  ");//Creating & initializing a new button.
Font titleFont = new Font("Arial", Font.BOLD, 30);//Creating a font.
Font labelFont = new Font("Courier", Font.PLAIN, 20);//Creating a font.
Font buttonFont = new Font("Courier", Font.PLAIN, 14);//Creating a font.
Color lightGreen = new Color(51, 255, 0);//Creating a color, light green.
Color darkRed = new Color(204, 0, 0);//Creating a color, dark red.
Dimension tfd = new Dimension(200, 20);//Creating a dimension, tfd (Text Field Dimension)
////////////////////////////////////////////////////////////////////////////
JPanel newCharacterScreen = new JPanel();//The JPanel for the player's REGISTER SCREEN
JTextField desiredUsername = new JTextField();
JLabel newCharacterTitleLabel = new JLabel("NEW CHARACTER");
JLabel usernameLabel2 = new JLabel("Enter Desired Username:");
JLabel chooseGender = new JLabel("Choose Desired Gender:");
JLabel maleLabel = new JLabel("Male");
JLabel femaleLabel = new JLabel("Female");
JRadioButton male = new JRadioButton("Male");
JRadioButton female = new JRadioButton("Female");
ButtonGroup genderGroup = new ButtonGroup();
JButton nextButton = new JButton("  Continue  ");
////////////////////////////////////////////////////////////////////////////
JPanel characterCreationScreen = new JPanel();//The JPanel for the player's Character Creation Screen
////////////////////////////////////////////////////////////////////////////
//File locations for the character info
String characterName = "";
String passwordString = "";
String gender = "";
File filename = new File(System.getenv("APPDATA") + "\\.outer\\info\\" + characterName + "\\charInfo.txt");
File filename2 = new File(System.getenv("APPDATA") + "\\.outer\\info\\" + characterName + "\\playerStats.txt");
File filename3 = new File(System.getenv("APPDATA") + "\\.outer\\info\\" + characterName + "\\playerExpLvl.txt");
//File locations for the RACE IMAGES.
File dwarfPNGOutput = new File(System.getenv("APPDATA") + "\\.outer\\images\\dwarf.png");
File humanPNGOutput = new File(System.getenv("APPDATA") + "\\.outer\\images\\human.png");
File elfPNGOutput = new File(System.getenv("APPDATA") + "\\.outer\\images\\elf.png");
File orcPNGOutput = new File(System.getenv("APPDATA") + "\\.outer\\images\\orc.png");
//File locations for the CLASS images.
File knightPNGOutput = new File(System.getenv("APPDATA") + "\\.outer\\images\\knight.png");
File wizardPNGOutput = new File(System.getenv("APPDATA") + "\\.outer\\images\\wizard.png");
File rangerPNGOutput = new File(System.getenv("APPDATA") + "\\.outer\\images\\ranger.png");
File priestPNGOutput = new File(System.getenv("APPDATA") + "\\.outer\\images\\priest.png");
//File locations for the APPDATA directory + images folder.
File directory = new File(System.getenv("APPDATA") + "\\.outer");
File directoryIMAGE = new File(System.getenv("APPDATA") + "\\.outer\\images");
File directoryInfo = new File(System.getenv("APPDATA") + "\\.outer\\info");
//URL's FOR RACE PHOTOS
String dwarfPNG = "http://eaglepwn.ucoz.com/images/dwarf.png";
String humanPNG = "http://eaglepwn.ucoz.com/images/human.png";
String elfPNG = "http://eaglepwn.ucoz.com/images/elf.png";
String orcPNG = "http://eaglepwn.ucoz.com/images/orc.png";
/////////////
String knightPNG = "http://eaglepwn.ucoz.com/images/knight.png";
String wizardPNG = "http://eaglepwn.ucoz.com/images/wizard.png";
String rangerPNG = "http://eaglepwn.ucoz.com/images/ranger.png";
String priestPNG = "http://eaglepwn.ucoz.com/images/priest.png";
/////////////

@Override
public void init() {
    initComponents();
    try {
        //This sets the look and feel to NIMBUS.
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
    } catch (Exception e) {
        e.printStackTrace();
    }
    //Calls the method showStartScreen()
    startGame();

}

// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    getContentPane().setLayout(new java.awt.CardLayout());
}// </editor-fold>                        
// Variables declaration - do not modify                     
// End of variables declaration                   

public void colorAndFont() {
    //Setting the background colors of all panels to black.
    startScreen.setBackground(Color.BLACK);
    newCharacterScreen.setBackground(Color.BLACK);
    characterCreationScreen.setBackground(Color.BLACK);
    //Setting the font and color of the labels.
    usernameLabel.setFont(labelFont);
    usernameLabel.setForeground(lightGreen);
    passwordLabel.setFont(labelFont);
    passwordLabel.setForeground(lightGreen);
    newCharacterTitleLabel.setFont(titleFont);
    newCharacterTitleLabel.setForeground(darkRed);
    usernameLabel2.setFont(labelFont);
    usernameLabel2.setForeground(lightGreen);
    chooseGender.setFont(labelFont);
    chooseGender.setForeground(lightGreen);
    maleLabel.setFont(labelFont);
    maleLabel.setForeground(lightGreen);
    femaleLabel.setFont(labelFont);
    femaleLabel.setForeground(lightGreen);
    //Setting the font and color of the TextFields.
    username.setFont(buttonFont);
    username.setForeground(lightGreen);
    username.setBackground(Color.BLACK);
    password.setFont(buttonFont);
    password.setForeground(lightGreen);
    password.setBackground(Color.BLACK);
    desiredUsername.setFont(buttonFont);
    desiredUsername.setForeground(lightGreen);
    desiredUsername.setBackground(Color.BLACK);
    //Setting the font and color of all the buttons.
    start.setFont(buttonFont);
    start.setForeground(lightGreen);
    start.setBackground(Color.BLACK);
    start.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(102, 255, 0), 2, true));
    startNew.setFont(buttonFont);
    startNew.setForeground(lightGreen);
    startNew.setBackground(Color.BLACK);
    startNew.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(102, 255, 0), 2, true));
    nextButton.setFont(buttonFont);
    nextButton.setForeground(lightGreen);
    nextButton.setBackground(Color.BLACK);
    nextButton.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(102, 255, 0), 2, true));
    //Setting the font and color of all the JRadioButtons
    male.setFont(buttonFont);
    male.setForeground(lightGreen);
    male.setBackground(Color.BLACK);
    female.setFont(buttonFont);
    female.setForeground(lightGreen);
    female.setBackground(Color.BLACK);
}

public void startScreenInfo(){
    //Setting the size of the actual applet screen.
    setSize(450, 350);
    //Adding a BOX LAYOUT to the Start Screen Panel
    startScreen.setLayout(new BoxLayout(startScreen, BoxLayout.Y_AXIS));
    //Adding a Box Filler
    startScreen.add(new Box.Filler(tfd, tfd, tfd));
    //Adding a Box Filler
    startScreen.add(new Box.Filler(tfd, tfd, tfd));
    //Adding and editing info for usernameLabel
    startScreen.add(usernameLabel);
    usernameLabel.setVisible(true);
    usernameLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
    //Adding a Box Filler
    startScreen.add(new Box.Filler(tfd, tfd, tfd));
    //Adding and editing info for username TextField
    startScreen.add(username);
    username.setVisible(true);
    username.setMinimumSize(tfd);
    username.setMaximumSize(tfd);
    username.setPreferredSize(tfd);
    username.setAlignmentX(Component.CENTER_ALIGNMENT);
    username.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(51, 255, 0), 2, true));
    //Adding a Box Filler
    startScreen.add(new Box.Filler(tfd, tfd, tfd));
    //Adding and editing info for passwordLabel
    startScreen.add(passwordLabel);
    passwordLabel.setVisible(true);
    passwordLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
    //Adding a Box Filler
    startScreen.add(new Box.Filler(tfd, tfd, tfd));
    //Adding and editing info for password TextField
    startScreen.add(password);
    password.setVisible(true);
    password.setMinimumSize(tfd);
    password.setMaximumSize(tfd);
    password.setPreferredSize(tfd);
    password.setAlignmentX(Component.CENTER_ALIGNMENT);
    password.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(51, 255, 0), 2, true));
    //Adding a Box Filler
    startScreen.add(new Box.Filler(tfd, tfd, tfd));
    //Adding and editing info for start JButton
    startScreen.add(start);
    start.setVisible(true);
    start.setAlignmentX(Component.CENTER_ALIGNMENT);
    start.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            characterName = username.getText();
            passwordString = password.getText();
            logincheck();
            if (string1.equals(characterName) && string2.equals(passwordString)) {
                System.out.println("YOU ARE LOGGED IN!");
            } else if (!string1.equals(characterName) && string2.equals(passwordString)) {
                System.out.println("Incorrect Username");
            } else if (string1.equals(characterName) && !string2.equals(passwordString)) {
                System.out.println("Incorrect Password");
            }
        }
    });
    //Adding a Box Filler
    startScreen.add(new Box.Filler(tfd, tfd, tfd));
    //Adding and editing info for startNew JButton
    startScreen.add(startNew);
    startNew.setVisible(true);
    startNew.setAlignmentX(Component.CENTER_ALIGNMENT);
    //Adding an actionlistener to the startNew JBUTTON
    startNew.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            //Trying to create the new directory in APPDATA
            try {
                if (directory.mkdir()) {
                    System.out.println("APPDATA Directory Created");
                } else {
                    System.out.println("APPDATA Directory is not created");
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            //Trying to create a new directory, inside an already made directory.
            try {
                if (directoryIMAGE.mkdir()) {
                    System.out.println("Images Directory Created");
                } else {
                    System.out.println("Image Directory is not created");
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            //Downloads images into directory, after calling method.
            downloadImages();
            downloadImages2();
            showNewCharacterScreen();

        }
    });
    //Adding a Box Filler
    startScreen.add(new Box.Filler(tfd, tfd, tfd));
    //Calling the method colorAndFont to set the color and font of the panels.
    colorAndFont();
    //Adding the startScreen to the JApplet, setting it visible

}

public void newCharacterScreenInfo() {
    //Setting the size of the actual applet screen.
    setSize(450, 350);
    //ADDING RADIO BUTTONS INTO BUTTON GROUP
    genderGroup.add(male);
    genderGroup.add(female);
    //Adding a BOX LAYOUT to the Start Screen Panel
    newCharacterScreen.setLayout(new BoxLayout(newCharacterScreen, BoxLayout.Y_AXIS));
    //Adding and editing the TITLE label at the top.
    newCharacterScreen.add(newCharacterTitleLabel);
    newCharacterTitleLabel.setVisible(true);
    newCharacterTitleLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
    //Adding a Box Filler
    newCharacterScreen.add(new Box.Filler(tfd, tfd, tfd));
    //Adding a Box Filler
    newCharacterScreen.add(new Box.Filler(tfd, tfd, tfd));
    //Adding and editing the Desired Username Label
    newCharacterScreen.add(usernameLabel2);
    usernameLabel2.setVisible(true);
    usernameLabel2.setAlignmentX(Component.CENTER_ALIGNMENT);
    //Adding and editing info for desired username JTextField
    newCharacterScreen.add(desiredUsername);
    desiredUsername.setVisible(true);
    desiredUsername.setMinimumSize(tfd);
    desiredUsername.setMaximumSize(tfd);
    desiredUsername.setPreferredSize(tfd);
    desiredUsername.setAlignmentX(Component.CENTER_ALIGNMENT);
    //Adding and editing info for Choose Gender label
    newCharacterScreen.add(chooseGender);
    chooseGender.setVisible(true);
    chooseGender.setAlignmentX(Component.CENTER_ALIGNMENT);
    //Adding and editing info for Male Label
    newCharacterScreen.add(maleLabel);
    maleLabel.setVisible(true);
    maleLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
    //Adding and editing info for Male JRadioButton
    newCharacterScreen.add(male);
    male.setVisible(true);
    male.setAlignmentX(Component.CENTER_ALIGNMENT);
    male.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            gender = "Male";
        }
    });
    //Adding and editing info for Female label.
    newCharacterScreen.add(femaleLabel);
    femaleLabel.setVisible(true);
    femaleLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
    //Adding and editing info for Female JRadioButton
    newCharacterScreen.add(female);
    female.setVisible(true);
    female.setAlignmentX(Component.CENTER_ALIGNMENT);
    female.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            gender = "Female";
        }
    });
    //Adding and editing info for nextButton JButton
    newCharacterScreen.add(nextButton);
    nextButton.setVisible(true);
    nextButton.setAlignmentX(Component.CENTER_ALIGNMENT);
    nextButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            register();
        }
    });
}

public void factionScreenInfo() {
}

public void startGame() {
    startScreenInfo();
    newCharacterScreenInfo();
    factionScreenInfo();
    add(startScreen);
    add(newCharacterScreen);
    add(characterCreationScreen);
    startScreen.setVisible(true);
    System.out.println("Start Screen added");
}

public void showNewCharacterScreen() {
    startScreen.setVisible(false);
    newCharacterScreen.setVisible(true);
    revalidate();
    repaint();
}

public void showCharacterCreationScreen() {
}

public void showFactionScreen() {
}

public void logincheck() {
    //Creating the new buffered reader, which reads in stats.
    BufferedReader bre;
    try {
        bre = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
        String line;
        while ((line = bre.readLine()) != null) {
            if (line.startsWith("u")) {
                string1 = line;
                String substring = string1.substring(1);
                string1 = substring;
            } else if (line.startsWith("p")) {
                string2 = line;
                String substring = string2.substring(1);
                string2 = substring;
            }
        }
        bre.close();
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("Account hasn't been created yet.");
    }
}

public void downloadImages() {
    System.out.println("Downloading race images....");
    try {
        //making a URL out of the strings..
        URL urlItem = new URL(dwarfPNG);
        URL urlItem2 = new URL(humanPNG);
        URL urlItem3 = new URL(elfPNG);
        URL urlItem4 = new URL(orcPNG);
        //Creating images from the URL's.
        Image imageBR = ImageIO.read(urlItem);
        Image imageBR2 = ImageIO.read(urlItem2);
        Image imageBR3 = ImageIO.read(urlItem3);
        Image imageBR4 = ImageIO.read(urlItem4);
        //Creating bufferedImages from the Images.
        BufferedImage cpimg = (BufferedImage) imageBR;
        BufferedImage cpimg2 = (BufferedImage) imageBR2;
        BufferedImage cpimg3 = (BufferedImage) imageBR3;
        BufferedImage cpimg4 = (BufferedImage) imageBR4;
        //Writing images, using bufferedImages and images.
        ImageIO.write(cpimg, "png", dwarfPNGOutput);
        ImageIO.write(cpimg2, "png", humanPNGOutput);
        ImageIO.write(cpimg3, "png", elfPNGOutput);
        ImageIO.write(cpimg4, "png", orcPNGOutput);
        System.out.println("Race Images downloaded....");
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("Problem with internet, or resources.");
    }

}

public void downloadImages2() {
    System.out.println("Downloading class images....");
    try {
        URL urlItem = new URL(knightPNG);
        URL urlItem2 = new URL(wizardPNG);
        URL urlItem3 = new URL(rangerPNG);
        URL urlItem4 = new URL(priestPNG);
        Image imageBR = ImageIO.read(urlItem);
        Image imageBR2 = ImageIO.read(urlItem2);
        Image imageBR3 = ImageIO.read(urlItem3);
        Image imageBR4 = ImageIO.read(urlItem4);

        BufferedImage cpimg = (BufferedImage) imageBR;
        BufferedImage cpimg2 = (BufferedImage) imageBR2;
        BufferedImage cpimg3 = (BufferedImage) imageBR3;
        BufferedImage cpimg4 = (BufferedImage) imageBR4;

        ImageIO.write(cpimg, "png", knightPNGOutput);
        ImageIO.write(cpimg2, "png", wizardPNGOutput);
        ImageIO.write(cpimg3, "png", rangerPNGOutput);
        ImageIO.write(cpimg4, "png", priestPNGOutput);
        System.out.println("Class Images downloaded....");
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("Problem with internet, or resources.");
    }

}

public void register() {
    characterName = desiredUsername.getText();
    File directoryName = new File(System.getenv("APPDATA") + "\\.outer\\info" + "\\" + characterName);
    filename = new File(System.getenv("APPDATA") + "\\.outer\\info\\" + characterName + "\\charInfo.txt");
    filename2 = new File(System.getenv("APPDATA") + "\\.outer\\info\\" + characterName + "\\playerStats.txt");
    filename3 = new File(System.getenv("APPDATA") + "\\.outer\\info\\" + characterName + "\\playerExpLvl.txt");
    //Tries to create a new directory.
    try {
        if (directory.mkdir()) {
            System.out.println("APPDATA Directory Created");
        } else {
            System.out.println("APPDATA Directory is not created");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    //Tries to create a new directory
    try {
        if (directoryIMAGE.mkdir()) {
            System.out.println("Images Directory Created");
        } else {
            System.out.println("Image Directory is not created");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    //Tries to create a newer directory.
    try {
        if (directoryInfo.mkdir()) {
            System.out.println("Images Directory Created");
        } else {
            System.out.println("Image Directory is not created");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }//Tries to create a even newer directory
    try {
        if (directoryName.mkdir()) {
            System.out.println("Images Directory Created");
        } else {
            System.out.println("Image Directory is not created");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    /////////////////////////////////////////////////////////////////
    BufferedWriter bufferedWriter = null;
    try {
        //   FileWriter out = new FileWriter(filename, true); 
        //^^^  IF I WANTED TO APPEND TEXT AFTER!

        //Construct the BufferedWriter object
        bufferedWriter = new BufferedWriter(new FileWriter(filename));

        //Start writing to the output stream

        bufferedWriter.append("u" + desiredUsername.getText());
        bufferedWriter.newLine();
        bufferedWriter.append("g" + gender);
        bufferedWriter.newLine();
    } catch (Exception ex) {
        ex.printStackTrace();
        System.out.println("Name already exists.");
    } finally {
        //Close the BufferedWriter
        try {
            if (bufferedWriter != null) {
                bufferedWriter.flush();
                bufferedWriter.close();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    showCharacterCreationScreen();
}

}

1 个答案:

答案 0 :(得分:1)

首先,在startScreenInfo()方法中有两个具有相同参数的actionPerformed方法。那可能是你的问题。

您实际上在一个方法中放置了一些其他actionPerformed方法。尝试将您的actionPerformed方法合并为一个,看看是否有效。

根据对以下问题的第二个回复,如果在一个包中有两个具有相同名称的类,或者可能有两个具有相同名称和参数的方法,则会发生该错误:Reference

如果这是问题,我不是100%,但它可能会帮助你。