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