06. maj 2007 - 18:22
Der er
12 kommentarer og 1 løsning
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerExcep
//Code// /* * Bike.java * * Created on 6. maj 2007, 16:21 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * * @author Joshlo */ public class Bike extends javax.swing.JFrame { private JFrame frame; private JPanel gearpanel; private JPanel speedpanel; private JPanel pulsepanel; private Graphics g; private int x1; private int x2; private int y1; private int y2; private int y3; /** Creates a new instance of Bike */ public Bike() { createFrame(); } public void createFrame() { g.setColor(Color.GRAY); frame = new JFrame(); frame.setTitle("Bike"); frame.setSize(900,650); frame.setResizable(false); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); gearpanel.setSize(800,200); gearpanel.setLocation(100,0); gearpanel.setBackground(Color.BLACK); geargrid(); speedpanel.setSize(800,200); speedpanel.setLocation(100,210); speedpanel.setBackground(Color.BLACK); pulsepanel.setSize(800,200); pulsepanel.setLocation(100,420); pulsepanel.setBackground(Color.BLACK); frame.getContentPane().add(gearpanel); frame.getContentPane().add(speedpanel); frame.getContentPane().add(pulsepanel); frame.setVisible(true); } public void geargrid() { g.drawLine(100,0,900,0); g.drawLine(100,25,900,25); g.drawLine(100,50,900,50); g.drawLine(100,75,900,75); g.drawLine(100,100,900,100); g.drawLine(100,125,900,125); g.drawLine(100,150,900,150); g.drawLine(100,175,900,175); g.drawLine(100,200,900,200); int y4 = gearpanel.getWidth() / 25; for(y3 = 0; y3 <= y4; y3++) { x1 = 0; x2 = 0; y1 = 0; y2 = 200; g.drawLine(x1,y1,x2,y2); x1 = x1 + 25; x2 = x2 + 25; y1 = 0; y2 = 200; } } public static void main(String []args) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Bike(); } }); } } //fejl// Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Bike.createFrame(Bike.java:37) at Bike.<init>(Bike.java:32) at Bike$1.run(Bike.java:96) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) håber der er en der kan hjælpe mig.
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
gearpanel speedpanel pulsepanel er ikke instansieret. De skal alle tre new'es inden du arbejder med dem.
Altså noget a la: public void createFrame() { g.setColor(Color.GRAY); frame = new JFrame(); frame.setTitle("Bike"); frame.setSize(900,650); frame.setResizable(false); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); gearpanel = new JPanel(); gearpanel.setSize(800,200); gearpanel.setLocation(100,0); gearpanel.setBackground(Color.BLACK); geargrid(); speedpanel = new JPanel(); speedpanel.setSize(800,200); speedpanel.setLocation(100,210); speedpanel.setBackground(Color.BLACK); pulsepanel = new JPanel(); pulsepanel.setSize(800,200); pulsepanel.setLocation(100,420); pulsepanel.setBackground(Color.BLACK); frame.getContentPane().add(gearpanel); frame.getContentPane().add(speedpanel); frame.getContentPane().add(pulsepanel); frame.setVisible(true); }
jeg får stadig den samme fejl
det er vel g.setColor(Color.GRAY); som giver fejlen fordi g er null
det er ikke skyld i fejlen men jeg tror at frame = new JFrame(); frame.setTitle("Bike"); frame.setSize(900,650); frame.setResizable(false); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); skal være setTitle("Bike"); setSize(900,650); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Jah, det er det jo egentlig nok. Jeg ville bare slette den linje. Men det andet ville også fejle, når fejlen med g er rettet :)
Og i forlængelse af Arnes antagelse, skal: frame.getContentPane().add(gearpanel); frame.getContentPane().add(speedpanel); frame.getContentPane().add(pulsepanel); frame.setVisible(true); Være: getContentPane().add(gearpanel); getContentPane().add(speedpanel); getContentPane().add(pulsepanel); setVisible(true); Eller hvis det er java 1.5 eller højere: add(gearpanel); add(speedpanel); add(pulsepanel);
Ser lige at g også bruges længere nede. Så det må blive noget lignende: public void createFrame() { setTitle("Bike"); setSize(900,650); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); g = getGraphics(); g.setColor(Color.GRAY); //.. resten af koden... }
fejlen ligger alle de steder hvor der står g.setcolor eller g.drawline. og det er også selvom jeg bruger g = getGraphics();
Nu kan jeg ikke lige gennemskue hvordan du vil have det til at se ud, men prøv følgende: import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * * @author Joshlo */ public class Bike extends javax.swing.JFrame { private JFrame frame; private JPanel gearpanel; private JPanel speedpanel; private JPanel pulsepanel; private Graphics g; private int x1; private int x2; private int y1; private int y2; private int y3; /** Creates a new instance of Bike */ public Bike() { createFrame(); } public void createFrame() { setTitle("Bike"); setSize(900,650); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); gearpanel = new JPanel(); gearpanel.setSize(800,200); gearpanel.setLocation(100,0); gearpanel.setBackground(Color.BLACK); speedpanel = new JPanel(); speedpanel.setSize(800,200); speedpanel.setLocation(100,210); speedpanel.setBackground(Color.BLACK); pulsepanel = new JPanel(); pulsepanel.setSize(800,200); pulsepanel.setLocation(100,420); pulsepanel.setBackground(Color.BLACK); getContentPane().add(gearpanel); getContentPane().add(speedpanel); getContentPane().add(pulsepanel); setVisible(true); } public void paint (Graphics g) { super.paint(g); g.setColor(Color.GRAY); g.drawLine(100,0,900,0); g.drawLine(100,25,900,25); g.drawLine(100,50,900,50); g.drawLine(100,75,900,75); g.drawLine(100,100,900,100); g.drawLine(100,125,900,125); g.drawLine(100,150,900,150); g.drawLine(100,175,900,175); g.drawLine(100,200,900,200); int y4 = gearpanel.getWidth() / 25; for(y3 = 0; y3 <= y4; y3++) { x1 = 0; x2 = 0; y1 = 0; y2 = 200; g.drawLine(x1,y1,x2,y2); x1 = x1 + 25; x2 = x2 + 25; y1 = 0; y2 = 200; } } public static void main(String []args) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Bike(); } }); } } Læg mærke til at jeg overrider paint-metoden!
den virker nu. så hvis du gider ligge et svar mikkelbm. du ved vel ikke tilfældigvis hvorfor min forløkke ikke blir kørt?
har løst min løkke. bare smid svaret
Kurser inden for grundlæggende programmering