File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
Win a copy of Clojure in Action this week in the Clojure forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Not able to change Background color of a component

 
Jing Liang
Ranch Hand
Posts: 40
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In my JApplet, I am able to change the background color of the panel but not the currentSurface which is an instance of PaintSurface. Could someone please help me out? Many thanks

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;

public class Tanks extends JApplet
{
public static final int WIDTH = 400;
public static final int HEIGHT = 400;
private JButton button1;
private PaintSurface currentSurface = new PaintSurface();

public Tanks()
{
this.add(currentSurface,BorderLayout.CENTER);
ButtonListener b1 = new ButtonListener();
JPanel panel = new JPanel();
panel.setBackground(Color.white);
currentSurface.setBackground(Color.white);

button1 = new JButton("Start");
button1.addActionListener(b1);
panel.add(button1);
this.add(panel,BorderLayout.NORTH);

}


public void init()
{
this.setSize(WIDTH, HEIGHT);

this.setVisible(true);


}


private class ButtonListener implements ActionListener
{


public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand() == "Start")
{
currentSurface.figure="Start";
repaint();
}
}


}
}


class AnimationThread extends Thread
{
JApplet c;

public AnimationThread(JApplet c)
{
this.c = c;
}

public void run()
{

}
}


class PaintSurface extends JComponent
{
String figure;


public PaintSurface()
{

}

public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;

g2.setRenderingHint(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);



if(figure=="Start")
{
Shape s = new Ellipse2D.Float(20,50,250,150);
g2.setPaint(Color.BLACK);
g2.draw(s);

}


}
}
 
Jing Liang
Ranch Hand
Posts: 40
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Sorry forgot to wrap it with CODE on the first post.

 
Ilja Preuss
author
Sheriff
Posts: 14112
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The background of a JComponent gets painted in its paint method.

Your PaintSurface class overrides that method, without containing a call to super.paint(Graphics) or drawing the background itself. So the background doesn't get painted.

Does that help?
 
I agree. Here's the link: http://aspose.com/file-tools
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic