mardi 7 mars 2017

AWT-EventQueue-0 | Random selection from String[] [duplicate]

This question already has an answer here:

I was trying to make splashes for my small game menu. In the IDE (I use Netbeans) everthing works fine, but if I compile and run the jar file it gives the following exception:

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at jumpover.MenuDrawing.getRandomSplash(MenuDrawing.java:52)
    at jumpover.MenuDrawing.<init>(MenuDrawing.java:48)
    at jumpover.JOFrame.<init>(JOFrame.java:20)
    at jumpover.JOFrame.lambda$main$0(JOFrame.java:48)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Here's the code:

    public MenuDrawing(JFrame f) {
    addMouseListener(this);
    Frame = f;
    qualityHints = new RenderingHints(
            RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
    qualityHints.put(
            RenderingHints.KEY_RENDERING,
            RenderingHints.VALUE_RENDER_QUALITY);
    String[] Splashes = getSplashes("/resources/splashes.txt");
    SelectedSplash = getRandomSplash(Splashes);
}

private String getRandomSplash(String[] s) {
    String Random = s[new Random().nextInt(s.length)];
    System.out.println(Random);
    return Random;
}

private String[] getSplashes(String Name) {
    String[] sp = null;
    try {
        String content = new Scanner(new File(getClass().getResource(Name).getFile())).useDelimiter("\\Z").next();
        sp = content.split("³");
    } catch (IOException ex) {
    }
    return sp;
}

I hope you can help me! :)

PS: Heres the Complete class if this helps!

    package jumpover;

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.MouseInfo;
    import java.awt.Point;
    import java.awt.Rectangle;
    import java.awt.RenderingHints;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    import java.util.Scanner;
    import javax.swing.JFrame;
    import javax.swing.JLabel;

    /**
    * @author APJ
    */
    public class MenuDrawing extends JLabel implements MouseListener {

private final List<Rectangle> Rects = new ArrayList<>();
private final Rectangle Player = new Rectangle(100, 276, 25, 26);
private Point RelMousePos;
private final Rectangle PlayButton = new Rectangle(200, 150, 275, 35);
private final String SelectedSplash;
private final Image Name = new javax.swing.ImageIcon(getClass().getResource("/resources/Name.png")).getImage().getScaledInstance(250, 75, Image.SCALE_DEFAULT);
private final JFrame Frame;
private final RenderingHints qualityHints;

public MenuDrawing(JFrame f) {
    addMouseListener(this);
    Frame = f;
    qualityHints = new RenderingHints(
            RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
    qualityHints.put(
            RenderingHints.KEY_RENDERING,
            RenderingHints.VALUE_RENDER_QUALITY);
    String[] Splashes = getSplashes("/resources/splashes.txt");
    SelectedSplash = getRandomSplash(Splashes);
}

private String getRandomSplash(String[] s) {
    String Random = s[new Random().nextInt(s.length)];
    System.out.println(Random);
    return Random;
}

private String[] getSplashes(String Name) {
    String[] sp = null;
    try {
        String content = new Scanner(new File(getClass().getResource(Name).getFile())).useDelimiter("\\Z").next();
        sp = content.split("³");
    } catch (IOException ex) {
    }
    return sp;
}

@Override
protected void paintComponent(Graphics g) {
    RelMousePos = new Point(MouseInfo.getPointerInfo().getLocation().x -       Frame.getLocation().x,
            MouseInfo.getPointerInfo().getLocation().y - Frame.getLocation().y);

    Graphics2D mG = (Graphics2D) g;
    super.paintComponent(mG);
    mG.setRenderingHints(qualityHints);
    //Name
    mG.drawImage(Name, 215, 35, null);
    //Playbutton
    if (PlayButton.contains(RelMousePos)) {
        mG.setColor(Color.CYAN);
        mG.setFont(new Font("Tahoma", 1, 20));
        mG.drawString("Play", 314, 174);
    } else {
        mG.setColor(Color.BLUE);
        mG.setFont(new Font("Tahoma", 0, 20));
        mG.drawString("Play", 315, 174);
    }
    mG.draw(PlayButton);
    //Splashtext
    mG.setColor(Color.BLUE);
    mG.rotate(Math.toRadians(-24));
    mG.setFont(new Font("Tahoma", 1, 13));
    mG.drawString(SelectedSplash, 330, 300);
}

@Override
public void mouseClicked(MouseEvent me) {
    if (PlayButton.contains(RelMousePos)) {
        Frame.remove(this);
        GameDrawing gd = new GameDrawing(Player);
        gd.setBounds(-10, -30, 691, 339);
        Frame.add(gd);
        new SummonRects(Frame, Player, Rects, gd).start();
    }
}

@Override
public void mousePressed(MouseEvent me) {
}

@Override
public void mouseReleased(MouseEvent me) {
}

@Override
public void mouseEntered(MouseEvent me) {
}

@Override
public void mouseExited(MouseEvent me) {
}
}

Aucun commentaire:

Enregistrer un commentaire