JPanel 如何改背景颜色

nandizhu 2009-10-27 09:11:56

public class BallPanel extends javax.swing.JPanel{
private final int INIT_X=75;
private final int INIT_Y=75;
private final int DIAMETER=60;
private SmartEllipse _ball;


public BallPanel(){
super();
_ball=new SmartEllipse(java.awt.Color.green);
_ball.setLocation(INIT_X,INIT_Y);
_ball.setSize(DIAMETER,DIAMETER);
this.setBackground(java.awt.Color.white);//我想把背景改成白色,但是不行。。。
}
public void paintComponent(java.awt.Graphics aBrush){
super.paintComponents(aBrush);
java.awt.Graphics2D betterBrush=(java.awt.Graphics2D)
aBrush;
_ball.fill(betterBrush);
_ball.draw((java.awt.Graphics2D) aBrush);
}
}
...全文
2832 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
mhlwjsso001 2011-03-23
  • 打赏
  • 举报
回复
我是菜鸟,我看你们写的代码都好复杂啊
nandizhu 2009-10-30
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 zhuyouyong 的回复:]
JFrame f = new JFrame();
JPanel p = new JPanel();
f.add(p);
p.setBackground(Color.RED);
this.setVisible(true);
[/Quote]

你可以 在我原程序上 改吗,,我这样 改了也不行
lishigui 2009-10-30
  • 打赏
  • 举报
回复

public class BallApp extends javax.swing.JFrame {
/** * @param args */
private BallPanel p;

public BallApp(String title) {
super(title);
this.setSize(600, 450);

this.setBackground(java.awt.Color.red);

this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
p = new BallPanel();
this.add(p);
this.setVisible(true);
}

public static void main(String[] args) { // TODO Auto-generated method stub
BallApp app = new BallApp("Jam's first window"); // pane1.
}
}

public class BallPanel extends javax.swing.JPanel {
private final int INIT_X = 75;
private final int INIT_Y = 75;
private final int DIAMETER = 250;
private SmartEllipse _ball;

public BallPanel() {
super();
_ball = new SmartEllipse(java.awt.Color.green);
_ball.setLocation(INIT_X, INIT_Y);
_ball.setSize(DIAMETER, DIAMETER);
}

public void paintComponent(java.awt.Graphics aBrush) {
super.paintComponents(aBrush);
java.awt.Graphics2D betterBrush = (java.awt.Graphics2D) aBrush;
_ball.fill(betterBrush);
_ball.draw((java.awt.Graphics2D) aBrush);
}
}

public class SmartEllipse extends java.awt.geom.Ellipse2D.Double {
private java.awt.Color _borderColor, _fillColor;
private int _rotation;
private final int STROKE_WIDTH = 2;

public SmartEllipse(java.awt.Color aColor) {
super();
_borderColor = aColor;
_fillColor = aColor;
_rotation = 0;
}

public void setBorderColor(java.awt.Color aColor) {
_borderColor = aColor;
}

public void setFillColor(java.awt.Color aColor) {
_fillColor = aColor;
}

public void setColor(java.awt.Color aColor) {
_fillColor = aColor;
_borderColor = aColor;
}

public void setRotation(int aRotation) {
_rotation = aRotation;
}

public void setLocation(double x, double y) {
this.setFrame(x, y, this.getWidth(), this.getHeight());
}

public void setSize(int aWidth, int aHeight) {
this.setFrame(this.getX(), this.getY(), aWidth, aHeight);
}

public void move(int aChangeInX, int aChangeInY) {
this.setFrame((int) this.getX() + aChangeInX, (int) this.getY()
+ aChangeInY, this.getWidth(), this.getHeight());
}

public void fill(java.awt.Graphics2D aBetterBrush) {
java.awt.Color saveColor = aBetterBrush.getColor();
aBetterBrush.setColor(_fillColor);
aBetterBrush.fill(this);
aBetterBrush.setColor(saveColor);
}

public void draw(java.awt.Graphics2D aBrush) {
java.awt.Color savedColor = aBrush.getColor();
aBrush.setColor(_borderColor);
java.awt.Stroke savedStroke = aBrush.getStroke();
aBrush.setStroke(new java.awt.BasicStroke(STROKE_WIDTH));
aBrush.draw(this);
aBrush.setStroke(savedStroke);
aBrush.setColor(savedColor);
}
}

老张-AI 2009-10-28
  • 打赏
  • 举报
回复
路过 学习

顶顶
miluo539 2009-10-28
  • 打赏
  • 举报
回复
java.awt.Color.white,white是不是要大写?
Jack_Skipper 2009-10-28
  • 打赏
  • 举报
回复
顶6楼
lz12366007 2009-10-28
  • 打赏
  • 举报
回复
getContentPane().setVisible(false);
this.setBackground(Color.WHITE);

这样写也是可以的
lz12366007 2009-10-28
  • 打赏
  • 举报
回复
很好。。。
chenlian911 2009-10-28
  • 打赏
  • 举报
回复
jbuild 一下 就可以了 咱刚学 不要怪我 嘎嘎
zhuyouyong 2009-10-28
  • 打赏
  • 举报
回复 1
JFrame f = new JFrame();
JPanel p = new JPanel();
f.add(p);
p.setBackground(Color.RED);
this.setVisible(true);
littlemonster 2009-10-28
  • 打赏
  • 举报
回复
是的,把Jpanel放在Jframe上,在用你那句就ok了。

[Quote=引用 7 楼 hui94781674 的回复:]
jpanel要有容器才可以显示的。不象JFrame之类的可以独立显示。。
[/Quote]
超超王贱贱 2009-10-28
  • 打赏
  • 举报
回复

再试试图
超超王贱贱 2009-10-28
  • 打赏
  • 举报
回复



public class BallApp extends javax.swing.JFrame {

/**
* @param args
*/
private BallComponent c;//换成c
public BallApp(String title){
super(title);

this.setSize(600,450);
this.setDefaultCloseOperation
(javax.swing.JFrame.EXIT_ON_CLOSE);
// p=new BallPanel();
// this.add(p);
c=new BallComponent();//换成c
this.add(c);
this.getContentPane().setBackground(java.awt.Color.RED);//背景色改成红

this.setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
BallApp app=
new BallApp("Jam's first window");
//pane1.
}
}

/**
* 照搬一个JComponent
* @author Administrator
*
*/
class BallComponent extends javax.swing.JComponent{
private final int INIT_X=75;
private final int INIT_Y=75;
private final int DIAMETER=250;
private SmartEllipse _ball;


public BallComponent(){
super();
_ball=new SmartEllipse(java.awt.Color.green);
_ball.setLocation(INIT_X,INIT_Y);
_ball.setSize(DIAMETER,DIAMETER);
}
public void paintComponent(java.awt.Graphics aBrush){
super.paintComponents(aBrush);
java.awt.Graphics2D betterBrush=(java.awt.Graphics2D)
aBrush;
_ball.fill(betterBrush);
_ball.draw((java.awt.Graphics2D) aBrush);
}
}

class SmartEllipse extends java.awt.geom.Ellipse2D.Double{
//public class SmartEllipse extends java.awt.geom.Ellipse2D.Double{ //去掉了public
private java.awt.Color _borderColor,_fillColor;
private int _rotation;
private final int STROKE_WIDTH=2;
public SmartEllipse(java.awt.Color aColor){
super();
_borderColor=aColor;
_fillColor=aColor;
_rotation=0;
}
public void setBorderColor(java.awt.Color aColor){
_borderColor=aColor;
}
public void setFillColor(java.awt.Color aColor){
_fillColor=aColor;
}
public void setColor(java.awt.Color aColor){
_fillColor=aColor;
_borderColor=aColor;
}
public void setRotation(int aRotation){
_rotation=aRotation;
}
public void setLocation(double x,double y){
this.setFrame(x,y,this.getWidth(),this.getHeight());
}
public void setSize(int aWidth,int aHeight){
this.setFrame(this.getX(),this.getY(),aWidth,aHeight);
}
public void move(int aChangeInX,int aChangeInY){
this.setFrame((int)this.getX()+aChangeInX,
(int)this.getY()+aChangeInY,
this.getWidth(),this.getHeight());
}
public void fill(java.awt.Graphics2D aBetterBrush){
java.awt.Color saveColor=aBetterBrush.getColor();
aBetterBrush.setColor(_fillColor);
aBetterBrush.fill(this);
aBetterBrush.setColor(saveColor);
}
public void draw(java.awt.Graphics2D aBrush){
java.awt.Color savedColor=aBrush.getColor();
aBrush.setColor(_borderColor);
java.awt.Stroke savedStroke=aBrush.getStroke();
aBrush.setStroke(new java.awt.BasicStroke(STROKE_WIDTH));
aBrush.draw(this);
aBrush.setStroke(savedStroke);
aBrush.setColor(savedColor);
}
}





我也是刚开始学;
1.5.0_17 Eclipse 调试

结果:

超超王贱贱 2009-10-28
  • 打赏
  • 举报
回复
JPanel 换成 JComponent
nandizhu 2009-10-27
  • 打赏
  • 举报
回复
我是先加了JFrame类的了~~~~~~~请你们帮帮忙~~~
nandizhu 2009-10-27
  • 打赏
  • 举报
回复
看来我该把全部程序贴出来,我的意图是先有一个JFrame类了,在里面放一个JPanel的类型,然后在JPanel上面显示一个圆,然后可以改JPanel的背景颜色,代码如下:



public class BallApp extends javax.swing.JFrame {

/**
* @param args
*/
private BallPanel p;
public BallApp(String title){
super(title);

this.setSize(600,450);
this.setDefaultCloseOperation
(javax.swing.JFrame.EXIT_ON_CLOSE);
p=new BallPanel();
this.add(p);

this.setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
BallApp app=
new BallApp("Jam's first window");
//pane1.
}
}


public class BallPanel extends javax.swing.JPanel{
private final int INIT_X=75;
private final int INIT_Y=75;
private final int DIAMETER=250;
private SmartEllipse _ball;


public BallPanel(){
super();
_ball=new SmartEllipse(java.awt.Color.green);
_ball.setLocation(INIT_X,INIT_Y);
_ball.setSize(DIAMETER,DIAMETER);
}
public void paintComponent(java.awt.Graphics aBrush){
super.paintComponents(aBrush);
java.awt.Graphics2D betterBrush=(java.awt.Graphics2D)
aBrush;
_ball.fill(betterBrush);
_ball.draw((java.awt.Graphics2D) aBrush);
}
}


public class SmartEllipse extends java.awt.geom.Ellipse2D.Double{
private java.awt.Color _borderColor,_fillColor;
private int _rotation;
private final int STROKE_WIDTH=2;
public SmartEllipse(java.awt.Color aColor){
super();
_borderColor=aColor;
_fillColor=aColor;
_rotation=0;
}
public void setBorderColor(java.awt.Color aColor){
_borderColor=aColor;
}
public void setFillColor(java.awt.Color aColor){
_fillColor=aColor;
}
public void setColor(java.awt.Color aColor){
_fillColor=aColor;
_borderColor=aColor;
}
public void setRotation(int aRotation){
_rotation=aRotation;
}
public void setLocation(double x,double y){
this.setFrame(x,y,this.getWidth(),this.getHeight());
}
public void setSize(int aWidth,int aHeight){
this.setFrame(this.getX(),this.getY(),aWidth,aHeight);
}
public void move(int aChangeInX,int aChangeInY){
this.setFrame((int)this.getX()+aChangeInX,
(int)this.getY()+aChangeInY,
this.getWidth(),this.getHeight());
}
public void fill(java.awt.Graphics2D aBetterBrush){
java.awt.Color saveColor=aBetterBrush.getColor();
aBetterBrush.setColor(_fillColor);
aBetterBrush.fill(this);
aBetterBrush.setColor(saveColor);
}
public void draw(java.awt.Graphics2D aBrush){
java.awt.Color savedColor=aBrush.getColor();
aBrush.setColor(_borderColor);
java.awt.Stroke savedStroke=aBrush.getStroke();
aBrush.setStroke(new java.awt.BasicStroke(STROKE_WIDTH));
aBrush.draw(this);
aBrush.setStroke(savedStroke);
aBrush.setColor(savedColor);
}
}
hui94781674 2009-10-27
  • 打赏
  • 举报
回复
jpanel要有容器才可以显示的。不象JFrame之类的可以独立显示。。
justinavril 2009-10-27
  • 打赏
  • 举报
回复
没看到你extends的JPanel,我以为是JFrame呢。我把你代码改了一下,你看看,当然这是示意如何显示背景色

public class BallPanel extends javax.swing.JFrame{//改成JFrame,为什么?看3楼
private final int INIT_X=75;
private final int INIT_Y=75;
private final int DIAMETER=260;//改大点 60实在太小了
//private SmartEllipse _ball;//我注释掉了


public BallPanel(){
super();
//_ball=new SmartEllipse(java.awt.Color.green);//同上 注释掉了
this.setLocation(INIT_X,INIT_Y);
this.setSize(DIAMETER,DIAMETER);
this.getContentPane().setBackground(java.awt.Color.red);//为了直白,改成红色
this.setVisible(true);//显示改组件
}


public static void main(String args[]){
new BallPanel();
}
}


输出:

xiaohuanjie 2009-10-27
  • 打赏
  • 举报
回复

同意4L
rookie001 2009-10-27
  • 打赏
  • 举报
回复
同意3L
加载更多回复(3)

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧