问题描述
publicclassBallPanelextendsjavax.swing.JPanel{privatefinalintINIT_X=75;privatefinalintINIT_Y=75;privatefinalintDIAMETER=60;privateSmartEllipse_ball;publicBallPanel(){super();_ball=newSmartEllipse(java.awt.Color.green);_ball.setLocation(INIT_X,INIT_Y);_ball.setSize(DIAMETER,DIAMETER);this.setBackground(java.awt.Color.white);//我想把背景改成白色,但是不行。。。}publicvoidpaintComponent(java.awt.GraphicsaBrush){super.paintComponents(aBrush);java.awt.Graphics2DbetterBrush=(java.awt.Graphics2D)aBrush;_ball.fill(betterBrush);_ball.draw((java.awt.Graphics2D)aBrush);}}
解决方案
解决方案二:
this.getContentPane().setBackground(java.awt.Color.white);
你试试上面的代码另外,没法帮你调试因为没有SmartEllipse类
解决方案三:
this.setBackground(java.awt.Color.white);//我想把背景改成白色,但是不行。。。放到paintComponent方法里publicvoidpaintComponent(java.awt.GraphicsaBrush){super.paintComponents(aBrush);java.awt.Graphics2DbetterBrush=(java.awt.Graphics2D)aBrush;setBackground(java.awt.Color.white_ball.fill(betterBrush);_ball.draw((java.awt.Graphics2D)aBrush);}
解决方案四:
this.setBackground(java.awt.Color.white);这样写是没有错的,但是panel是要有父组建的,即要在一个frame上才能显示一个panel,楼主试一下加一个frame,然后add这个panel,设置背景颜色那样写是正确的
解决方案五:
同意3L
解决方案六:
同意4L
解决方案七:
没看到你extends的JPanel,我以为是JFrame呢。我把你代码改了一下,你看看,当然这是示意如何显示背景色publicclassBallPanelextendsjavax.swing.JFrame{//改成JFrame,为什么?看3楼privatefinalintINIT_X=75;privatefinalintINIT_Y=75;privatefinalintDIAMETER=260;//改大点60实在太小了//privateSmartEllipse_ball;//我注释掉了publicBallPanel(){super();//_ball=newSmartEllipse(java.awt.Color.green);//同上注释掉了this.setLocation(INIT_X,INIT_Y);this.setSize(DIAMETER,DIAMETER);this.getContentPane().setBackground(java.awt.Color.red);//为了直白,改成红色this.setVisible(true);//显示改组件}publicstaticvoidmain(Stringargs[]){newBallPanel();}}
输出:
解决方案八:
jpanel要有容器才可以显示的。不象JFrame之类的可以独立显示。。
解决方案九:
看来我该把全部程序贴出来,我的意图是先有一个JFrame类了,在里面放一个JPanel的类型,然后在JPanel上面显示一个圆,然后可以改JPanel的背景颜色,代码如下:publicclassBallAppextendsjavax.swing.JFrame{/***@paramargs*/privateBallPanelp;publicBallApp(Stringtitle){super(title);this.setSize(600,450);this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);p=newBallPanel();this.add(p);this.setVisible(true);}publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubBallAppapp=newBallApp("Jam'sfirstwindow");//pane1.}}publicclassBallPanelextendsjavax.swing.JPanel{privatefinalintINIT_X=75;privatefinalintINIT_Y=75;privatefinalintDIAMETER=250;privateSmartEllipse_ball;publicBallPanel(){super();_ball=newSmartEllipse(java.awt.Color.green);_ball.setLocation(INIT_X,INIT_Y);_ball.setSize(DIAMETER,DIAMETER);}publicvoidpaintComponent(java.awt.GraphicsaBrush){super.paintComponents(aBrush);java.awt.Graphics2DbetterBrush=(java.awt.Graphics2D)aBrush;_ball.fill(betterBrush);_ball.draw((java.awt.Graphics2D)aBrush);}}publicclassSmartEllipseextendsjava.awt.geom.Ellipse2D.Double{privatejava.awt.Color_borderColor,_fillColor;privateint_rotation;privatefinalintSTROKE_WIDTH=2;publicSmartEllipse(java.awt.ColoraColor){super();_borderColor=aColor;_fillColor=aColor;_rotation=0;}publicvoidsetBorderColor(java.awt.ColoraColor){_borderColor=aColor;}publicvoidsetFillColor(java.awt.ColoraColor){_fillColor=aColor;}publicvoidsetColor(java.awt.ColoraColor){_fillColor=aColor;_borderColor=aColor;}publicvoidsetRotation(intaRotation){_rotation=aRotation;}publicvoidsetLocation(doublex,doubley){this.setFrame(x,y,this.getWidth(),this.getHeight());}publicvoidsetSize(intaWidth,intaHeight){this.setFrame(this.getX(),this.getY(),aWidth,aHeight);}publicvoidmove(intaChangeInX,intaChangeInY){this.setFrame((int)this.getX()+aChangeInX,(int)this.getY()+aChangeInY,this.getWidth(),this.getHeight());}publicvoidfill(java.awt.Graphics2DaBetterBrush){java.awt.ColorsaveColor=aBetterBrush.getColor();aBetterBrush.setColor(_fillColor);aBetterBrush.fill(this);aBetterBrush.setColor(saveColor);}publicvoiddraw(java.awt.Graphics2DaBrush){java.awt.ColorsavedColor=aBrush.getColor();aBrush.setColor(_borderColor);java.awt.StrokesavedStroke=aBrush.getStroke();aBrush.setStroke(newjava.awt.BasicStroke(STROKE_WIDTH));aBrush.draw(this);aBrush.setStroke(savedStroke);aBrush.setColor(savedColor);}}
解决方案十:
我是先加了JFrame类的了~~~~~~~请你们帮帮忙~~~
解决方案十一:
java.awt.Color.white,white是不是要大写?
解决方案十二:
路过学习顶顶
解决方案十三:
很好。。。
解决方案十四:
getContentPane().setVisible(false);this.setBackground(Color.WHITE);这样写也是可以的
解决方案十五:
顶6楼
解决方案:
JPanel换成JComponent
解决方案:
publicclassBallAppextendsjavax.swing.JFrame{/***@paramargs*/privateBallComponentc;//换成cpublicBallApp(Stringtitle){super(title);this.setSize(600,450);this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);//p=newBallPanel();//this.add(p);c=newBallComponent();//换成cthis.add(c);this.getContentPane().setBackground(java.awt.Color.RED);//背景色改成红this.setVisible(true);}publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubBallAppapp=newBallApp("Jam'sfirstwindow");//pane1.}}/***照搬一个JComponent*@authorAdministrator**/classBallComponentextendsjavax.swing.JComponent{privatefinalintINIT_X=75;privatefinalintINIT_Y=75;privatefinalintDIAMETER=250;privateSmartEllipse_ball;publicBallComponent(){super();_ball=newSmartEllipse(java.awt.Color.green);_ball.setLocation(INIT_X,INIT_Y);_ball.setSize(DIAMETER,DIAMETER);}publicvoidpaintComponent(java.awt.GraphicsaBrush){super.paintComponents(aBrush);java.awt.Graphics2DbetterBrush=(java.awt.Graphics2D)aBrush;_ball.fill(betterBrush);_ball.draw((java.awt.Graphics2D)aBrush);}}classSmartEllipseextendsjava.awt.geom.Ellipse2D.Double{//publicclassSmartEllipseextendsjava.awt.geom.Ellipse2D.Double{//去掉了publicprivatejava.awt.Color_borderColor,_fillColor;privateint_rotation;privatefinalintSTROKE_WIDTH=2;publicSmartEllipse(java.awt.ColoraColor){super();_borderColor=aColor;_fillColor=aColor;_rotation=0;}publicvoidsetBorderColor(java.awt.ColoraColor){_borderColor=aColor;}publicvoidsetFillColor(java.awt.ColoraColor){_fillColor=aColor;}publicvoidsetColor(java.awt.ColoraColor){_fillColor=aColor;_borderColor=aColor;}publicvoidsetRotation(intaRotation){_rotation=aRotation;}publicvoidsetLocation(doublex,doubley){this.setFrame(x,y,this.getWidth(),this.getHeight());}publicvoidsetSize(intaWidth,intaHeight){this.setFrame(this.getX(),this.getY(),aWidth,aHeight);}publicvoidmove(intaChangeInX,intaChangeInY){this.setFrame((int)this.getX()+aChangeInX,(int)this.getY()+aChangeInY,this.getWidth(),this.getHeight());}publicvoidfill(java.awt.Graphics2DaBetterBrush){java.awt.ColorsaveColor=aBetterBrush.getColor();aBetterBrush.setColor(_fillColor);aBetterBrush.fill(this);aBetterBrush.setColor(saveColor);}publicvoiddraw(java.awt.Graphics2DaBrush){java.awt.ColorsavedColor=aBrush.getColor();aBrush.setColor(_borderColor);java.awt.StrokesavedStroke=aBrush.getStroke();aBrush.setStroke(newjava.awt.BasicStroke(STROKE_WIDTH));aBrush.draw(this);aBrush.setStroke(savedStroke);aBrush.setColor(savedColor);}}
我也是刚开始学;1.5.0_17Eclipse调试结果:
解决方案:
再试试图
解决方案:
是的,把Jpanel放在Jframe上,在用你那句就ok了。引用7楼hui94781674的回复:
jpanel要有容器才可以显示的。不象JFrame之类的可以独立显示。。
解决方案:
JFramef=newJFrame();JPanelp=newJPanel();f.add(p);p.setBackground(Color.RED);this.setVisible(true);
解决方案:
jbuild一下就可以了咱刚学不要怪我嘎嘎
解决方案:
引用19楼zhuyouyong的回复:
JFramef=newJFrame();JPanelp=newJPanel();f.add(p);p.setBackground(Color.RED);this.setVisible(true);
你可以在我原程序上改吗,,我这样改了也不行
解决方案:
publicclassBallAppextendsjavax.swing.JFrame{/***@paramargs*/privateBallPanelp;publicBallApp(Stringtitle){super(title);this.setSize(600,450);this.setBackground(java.awt.Color.red);this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);p=newBallPanel();this.add(p);this.setVisible(true);}publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubBallAppapp=newBallApp("Jam'sfirstwindow");//pane1.}}publicclassBallPanelextendsjavax.swing.JPanel{privatefinalintINIT_X=75;privatefinalintINIT_Y=75;privatefinalintDIAMETER=250;privateSmartEllipse_ball;publicBallPanel(){super();_ball=newSmartEllipse(java.awt.Color.green);_ball.setLocation(INIT_X,INIT_Y);_ball.setSize(DIAMETER,DIAMETER);}publicvoidpaintComponent(java.awt.GraphicsaBrush){super.paintComponents(aBrush);java.awt.Graphics2DbetterBrush=(java.awt.Graphics2D)aBrush;_ball.fill(betterBrush);_ball.draw((java.awt.Graphics2D)aBrush);}}publicclassSmartEllipseextendsjava.awt.geom.Ellipse2D.Double{privatejava.awt.Color_borderColor,_fillColor;privateint_rotation;privatefinalintSTROKE_WIDTH=2;publicSmartEllipse(java.awt.ColoraColor){super();_borderColor=aColor;_fillColor=aColor;_rotation=0;}publicvoidsetBorderColor(java.awt.ColoraColor){_borderColor=aColor;}publicvoidsetFillColor(java.awt.ColoraColor){_fillColor=aColor;}publicvoidsetColor(java.awt.ColoraColor){_fillColor=aColor;_borderColor=aColor;}publicvoidsetRotation(intaRotation){_rotation=aRotation;}publicvoidsetLocation(doublex,doubley){this.setFrame(x,y,this.getWidth(),this.getHeight());}publicvoidsetSize(intaWidth,intaHeight){this.setFrame(this.getX(),this.getY(),aWidth,aHeight);}publicvoidmove(intaChangeInX,intaChangeInY){this.setFrame((int)this.getX()+aChangeInX,(int)this.getY()+aChangeInY,this.getWidth(),this.getHeight());}publicvoidfill(java.awt.Graphics2DaBetterBrush){java.awt.ColorsaveColor=aBetterBrush.getColor();aBetterBrush.setColor(_fillColor);aBetterBrush.fill(this);aBetterBrush.setColor(saveColor);}publicvoiddraw(java.awt.Graphics2DaBrush){java.awt.ColorsavedColor=aBrush.getColor();aBrush.setColor(_borderColor);java.awt.StrokesavedStroke=aBrush.getStroke();aBrush.setStroke(newjava.awt.BasicStroke(STROKE_WIDTH));aBrush.draw(this);aBrush.setStroke(savedStroke);aBrush.setColor(savedColor);}}
解决方案:
我是菜鸟,我看你们写的代码都好复杂啊