Note that there are some explanatory texts on larger screens.

plurals
  1. POSetting up a JPanel in a JFrame?
    text
    copied!<p>So, I've been working to redo my code so that the painting is all done in a JPanel instead of a JFrame so I can do some very much needed image buffering. </p> <p>I've scoured StackOverflow and I've googled my fingers raw and I thought I had it set up right, but it's not working. I just get a blank white screen and some error script in the terminal. Any help is appreciated. Here is the code</p> <pre><code>import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.awt.geom.*; public class RacerDoom extends JFrame { private JPanel panel; final int WIDTH = 900, HEIGHT = 640; int counter = 0; Rectangle left = new Rectangle(0,0,WIDTH/9,HEIGHT); Rectangle right = new Rectangle((WIDTH/9)*8,0,WIDTH/9,HEIGHT); Rectangle top = new Rectangle(0,0,WIDTH,HEIGHT/9); Rectangle bottom = new Rectangle(0,(HEIGHT/9)*8,WIDTH,HEIGHT); Rectangle center = new Rectangle((int)((WIDTH/9)*2.5),(int)((HEIGHT/9)*2.5),(int)((WIDTH/9)*4),(HEIGHT/9)*4); Rectangle p1 = new Rectangle(WIDTH/9,HEIGHT/2,WIDTH/30,WIDTH/30); Rectangle finishtop = new Rectangle(WIDTH/9,(HEIGHT/2)-HEIGHT/9,(int)((WIDTH/9)*1.5),HEIGHT/70); //Starting lines Rectangle startO = new Rectangle(WIDTH/9,HEIGHT/2,(int)((WIDTH/9)*1.5)/2,HEIGHT/140); public RacerDoom() { //create JFrame super("Racer Doom Squared"); setSize(WIDTH,HEIGHT); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); getContentPane().add(panel); panel = new MainPanel(); panel.setBounds(0,0,WIDTH,HEIGHT); this.getContentPane().add(panel); //set up Game countdown timer final Timer timer=new Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(counter&gt;=10) { ((Timer)e.getSource()).stop(); } else{ counter++; } System.out.println(counter); } }); //start timer timer.start(); } private class MainPanel extends JPanel { public MainPanel() { super(); } //draw graphics @Override public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.BLACK); g.fillRect(0,0,WIDTH,HEIGHT); //boundaries g.setColor(Color.LIGHT_GRAY); g.fillRect(left.x,left.y,left.width,left.height); g.fillRect(right.x,right.y,right.width,right.height); g.fillRect(top.x,top.y,top.width,top.height); g.fillRect(bottom.x,bottom.y,bottom.width,bottom.height); g.fillRect(center.x,center.y,center.width,center.height); //start line g.setColor(Color.WHITE); g.fillRect(startO.x,startO.y,startO.width,startO.height); //finish line g.setColor(Color.CYAN); g.fillRect(finishtop.x,finishtop.y,finishtop.width,finishtop.height); //p1 g.setColor(Color.BLUE); g.fill3DRect(p1.x,p1.y,p1.width,p1.height,true); //HUD g.setColor(Color.WHITE); Font f = new Font("Monospaced", Font.BOLD, 24); g.setFont(f); g.drawString("Boosts: "+p1Boost,(WIDTH-(WIDTH/6)),(HEIGHT-(int)(HEIGHT/1.1))); g.drawString("Time: "+(10-counter),540,100); } } public static void main (String [] args) { new RacerDoom(); } } </code></pre> <p>The error script:</p> <blockquote> <p>Exception in thread "main" java.lang.NullPointerException</p> <p>at java.awt.Container.addImpl(Unknown Source)</p> <p>at java.awt.Container.add(Unknown Source)</p> <p>at RacerDoom.(RacerDoom.java:46)</p> <p>at RacerDoom.main(RacerDoom.java:232)</p> </blockquote> <p>I'm quite sure I'm just an idiot and the answer is probably giving me the middle finger in the error message, but it's still Greek to me. But even (especially?) idiots need help.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload