java设置JFrame阴影_java – 在JFrame中设置JPanel?

所以,我一直在努力重做我的代码,以便绘画都是在JPanel而不是JFrame中完成的,所以我可以做一些非常需要的图像缓冲.

我已经搜索了StackOverflow,我用手指搜索了我的手指,我认为我设置正确,但它不起作用.我只是在终端中得到一个空白的白色屏幕和一些错误脚本.任何帮助表示赞赏.这是代码

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>=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();

}

}

错误脚本:

Exception in thread “main” java.lang.NullPointerException

at java.awt.Container.addImpl(Unknown Source)

at java.awt.Container.add(Unknown Source)

at RacerDoom.(RacerDoom.java:46)

at RacerDoom.main(RacerDoom.java:232)

我很确定我只是一个白痴,答案可能是在错误信息中给我中指,但它对我来说仍然是希腊语.但即使(特别是?)白痴也需要帮助.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值