AWT repaint() not Working

The Cdoe Given Below is not responding to the action of okBtn
It removes the center1Panel
but does not adds or repaints the added center2Panel
Wher am I wrong?
Help Me
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class ExamFrame extends Frame implements ActionListener{
     Button okBtn= new Button("OK");
     Panel mainPanel = new Panel();
     Panel southPanel = new Panel();
     Panel northPanel = new Panel();
     Panel centerPanel = new Panel();
     Panel center1Panel = new Panel();
     Panel center2Panel;
     public ExamFrame() {
          super("Exam");
          setBackground(Color.gray);
          southPanel.add(okBtn);
          mainPanel.setLayout(new BorderLayout());
          mainPanel.add(southPanel,BorderLayout.SOUTH);
          mainPanel.add(northPanel,BorderLayout.NORTH);
          mainPanel.add(centerPanel,BorderLayout.CENTER);
          centerPanel.setPreferredSize(new Dimension(400,600));
          southPanel.setBackground(Color.red);
          center1Panel.setBackground(Color.blue);
          center1Panel.setPreferredSize(new Dimension(400,600));
          center2Panel = new Panel();
          center2Panel.setBackground(Color.green);
          center2Panel.setPreferredSize(new Dimension(400,600));
          centerPanel.add(center1Panel);
          centerPanel.add(center2Panel);
          okBtn.addActionListener(this);
          add(mainPanel);
          this.addWindowListener(new WindowAdapter() {
               public void windowClosing(WindowEvent e) {
                    System.exit(0);
     public void actionPerformed(ActionEvent ae) {
          // TODO Auto-generated method stub
          if(ae.getSource()==okBtn){
               centerPanel.removeAll();
               repaint();
               center2Panel= new Panel();
               center2Panel.setBackground(Color.green);
               center2Panel.setPreferredSize(new Dimension(400,600));
               centerPanel.add(center2Panel);
               centerPanel.repaint();
               repaint();
     public static void main(String[] args) {
          // TODO Auto-generated method stub
          ExamFrame frame= new ExamFrame();
          frame.setSize(new Dimension(600,400));
          frame.setVisible(true);
}

You need to usecenterPanel.validate();instead ofcenterPanel.repaint();db

Similar Messages

  • Traffic light  repaint not working via button

    I created a traffic light, a button is pressed and the colors should cycle yellow>green>yellow>red etc.. as a normal traffic light would
    when i press the start button, the repaint(); doesnt work, system.output shows me the number which corresponds to the light changes but somehow the graphics/paint is not updated.
    what am i doing wrong?
    package test2;<br />
    <br />
    import java.awt.event.ActionEvent;<br />
    import java.awt.event.ActionListener;<br />
    import javax.swing.JButton;<br />
    import javax.swing.JOptionPane;<br />
    import javax.swing.JPanel;<br />
    <br />
    public class Traffic_Lights extends JPanel implements ActionListener {<br />
    <br />
    private Light_Controller LightController;<br />
    private JButton jStart, jStop;<br />
    <br />
    public Traffic_Lights() {<br />
    jStart = new JButton("START");<br />
    jStop = new JButton("EXIT");<br />
    <br />
    // Register Listeners with buttons<br />
    jStart.addActionListener(this);<br />
    jStop.addActionListener(this);<br />
    LightController = new Light_Controller();<br />
    this.add(jStart);<br />
    this.add(jStop);<br />
    }<br />
    // Adding the traffic light<br />
    <br />
    <br />
    /**<br />
    * This method traps the button click events<br />
    */<br />
    public void actionPerformed(ActionEvent e) {<br />
    // Rotate button is clicked<br />
    if (e.getSource() == jStart) {<br />
    // Change the color displayed<br />
    LightController.changeColor();<br />
    package test2;<br />
    import java.awt.*;<br />
    import java.awt.geom.Rectangle2D;<br />
    import javax.swing.JComponent;<br />
    import javax.swing.JPanel;<br />
    <br />
    <br />
    public class Light_Controller extends JPanel {<br />
    <br />
    private int lightState = 1;<br />
    <br />
    <br />
    public void changeColor() {<br />
    lightState++;<br />
    System.out.println(lightState);<br />
    if (lightState > 5) {<br />
    lightState = 2;<br />
    <br />
    }<br />
    <br />
    this.repaint();<br />
    <br />
    }<br />
    <br />
    /**<br />
    * This method draws the traffic light on the screen<br />
    */<br />
    public void paintComponent(Graphics g) {<br />
    super.paintComponent(g);<br />
    <br />
    Graphics2D g1 = (Graphics2D) g;<br />
    // Draws the traffic light<br />
    // Draw out white frame<br />
    g.setColor(new Color(255,255,255));<br />
    g.fillRoundRect(35,15,120,225,30,30);<br />
    <br />
    // Draw inner black frame<br />
    g.setColor(new Color(0,0,0));<br />
    g.fillRoundRect(50,30,90,195,30,30);<br />
    g.drawRoundRect(35,15,120,225,30,30);<br />
    <br />
    // RED dim<br />
    g.setColor(new Color(100,0,0));<br />
    g.fillOval(70,40,50,50);<br />
    <br />
    // YELLOW dim<br />
    g.setColor(new Color(100,100,0));<br />
    g.fillOval(70,100,50,50);<br />
    <br />
    // GREEN dim<br />
    g.setColor(new Color(0,100,0));<br />
    g.fillOval(70,160,50,50);<br />
    <br />
    // Draw traffic light stand<br />
    g.setColor(new Color(50,50,50));<br />
    g.fillRect(80,240,30,30);<br />
    <br />
    switch(lightState) {<br />
    case 1:<br />
    // red glows<br />
    g.setColor(new Color(255, 0, 0));<br />
    g.fillOval(70, 40, 50, 50);<br />
    g1.fill(new Rectangle2D.Double(440, 450, 60, 5));<br />
    g1.fill(new Rectangle2D.Double(350, 240, 60, 5));<br />
    g1.fill(new Rectangle2D.Double(345, 360, 5, 80));<br />
    g1.fill(new Rectangle2D.Double(500, 250, 5, 90));<br />
    break;<br />
    <br />
    case 2:<br />
    // yellow glows<br />
    g.setColor(new Color(255, 255, 0));<br />
    g.fillOval(70, 100, 50, 50);<br />
    g1.fill(new Rectangle2D.Double(440, 450, 60, 5));<br />
    g1.fill(new Rectangle2D.Double(350, 240, 60, 5));<br />
    g1.fill(new Rectangle2D.Double(345, 360, 5, 80));<br />
    g1.fill(new Rectangle2D.Double(500, 250, 5, 90));<br />
    break;<br />
    <br />
    case 3:<br />
    // green glows<br />
    g.setColor(new Color(0, 255, 0));<br />
    g.fillOval(70, 160, 50, 50);<br />
    g1.fill(new Rectangle2D.Double(440, 450, 60, 5));<br />
    g1.fill(new Rectangle2D.Double(350, 240, 60, 5));<br />
    g1.fill(new Rectangle2D.Double(345, 360, 5, 80));<br />
    g1.fill(new Rectangle2D.Double(500, 250, 5, 90));<br />
    break;<br />
    <br />
    case 4:<br />
    // back to yellow glows<br />
    g.setColor(new Color(255, 255, 0));<br />
    g.fillOval(70, 100, 50, 50);<br />
    g1.fill(new Rectangle2D.Double(440, 450, 60, 5));<br />
    g1.fill(new Rectangle2D.Double(350, 240, 60, 5));<br />
    g1.fill(new Rectangle2D.Double(345, 360, 5, 80));<br />
    g1.fill(new Rectangle2D.Double(500, 250, 5, 90));<br />
    break;<br />
    <br />
    case 5:<br />
    // back to red glows<br />
    g.setColor(new Color(255, 0, 0));<br />
    g.fillOval(70, 40, 50, 50);<br />
    g1.fill(new Rectangle2D.Double(440, 450, 60, 5));<br />
    g1.fill(new Rectangle2D.Double(350, 240, 60, 5));<br />
    g1.fill(new Rectangle2D.Double(345, 360, 5, 80));<br />
    g1.fill(new Rectangle2D.Double(500, 250, 5, 90));<br />
    break;<br />
    }<br />
    }<br />
    } <br />

    Code continued...
    class Light_Controller extends JPanel {
        private int lightState = 1;
        public void changeColor() {
            lightState++;
            System.out.println(lightState);
            if (lightState > 5) {
                lightState = 2;
            this.repaint();
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g1 = (Graphics2D) g;
            g.setColor(new Color(255, 255, 255));
            g.fillRoundRect(35, 15, 120, 225, 30, 30);
            g.setColor(new Color(0, 0, 0));
            g.fillRoundRect(50, 30, 90, 195, 30, 30);
            g.drawRoundRect(35, 15, 120, 225, 30, 30);
            g.setColor(new Color(100, 0, 0));
            g.fillOval(70, 40, 50, 50);
            g.setColor(new Color(100, 100, 0));
            g.fillOval(70, 100, 50, 50);
            g.setColor(new Color(0, 100, 0));
            g.fillOval(70, 160, 50, 50);
            g.setColor(new Color(50, 50, 50));
            g.fillRect(80, 240, 30, 30);
            switch (lightState) {
                case 1:
                    g.setColor(new Color(255, 0, 0));
                    g.fillOval(70, 40, 50, 50);
                    g1.fill(new Rectangle2D.Double(440, 450, 60, 5));
                    g1.fill(new Rectangle2D.Double(350, 240, 60, 5));
                    g1.fill(new Rectangle2D.Double(345, 360, 5, 80));
                    g1.fill(new Rectangle2D.Double(500, 250, 5, 90));
                    break;
                case 2:
                    g.setColor(new Color(255, 255, 0));
                    g.fillOval(70, 100, 50, 50);
                    g1.fill(new Rectangle2D.Double(440, 450, 60, 5));
                    g1.fill(new Rectangle2D.Double(350, 240, 60, 5));
                    g1.fill(new Rectangle2D.Double(345, 360, 5, 80));
                    g1.fill(new Rectangle2D.Double(500, 250, 5, 90));
                    break;
                case 3:
                    g.setColor(new Color(0, 255, 0));
                    g.fillOval(70, 160, 50, 50);
                    g1.fill(new Rectangle2D.Double(440, 450, 60, 5));
                    g1.fill(new Rectangle2D.Double(350, 240, 60, 5));
                    g1.fill(new Rectangle2D.Double(345, 360, 5, 80));
                    g1.fill(new Rectangle2D.Double(500, 250, 5, 90));
                    break;
                case 4:
                    g.setColor(new Color(255, 255, 0));
                    g.fillOval(70, 100, 50, 50);
                    g1.fill(new Rectangle2D.Double(440, 450, 60, 5));
                    g1.fill(new Rectangle2D.Double(350, 240, 60, 5));
                    g1.fill(new Rectangle2D.Double(345, 360, 5, 80));
                    g1.fill(new Rectangle2D.Double(500, 250, 5, 90));
                    break;
                case 5:
                    g.setColor(new Color(255, 0, 0));
                    g.fillOval(70, 40, 50, 50);
                    g1.fill(new Rectangle2D.Double(440, 450, 60, 5));
                    g1.fill(new Rectangle2D.Double(350, 240, 60, 5));
                    g1.fill(new Rectangle2D.Double(345, 360, 5, 80));
                    g1.fill(new Rectangle2D.Double(500, 250, 5, 90));
                    break;
    }

  • Repaint() not working on Nokia 9210 communicator

    Hi all,
    I have created an application in J2ME using MIDP1.0
    I created a class that extended Canvas and displayed a board on the screen.
    and a Timer class that repaints this screen every 1 second.
    and changes the coordinates of this board.
    I built it and run it on Wireless Toolkit 2.2 and created a package of it(.jar and .jad files).
    Now I ported these two files in the Nokia 9210i Communicator.
    When I opened this application, it showed me nothing on the screen, though everything else was working fine.
    To test it, I made another application that just changed the coordinates of a cube in this way.
    This time it showed me the static cube but not the moving cube.
    Please help me!!!!!!
    Its urgent.

    You won't be able to get it working.
    Planet 3 is only available on three branded handsets. They block all access to users of sim free handsets.
    It's a sneaky tactic that they use and there is no way around it on an E90 as three don't sell this model.
    Message Edited by psychomania on 23-Jun-2008 05:57 PM

  • Repaint() not working!

    When I call repaint(), paint() never gets called, thus nothing gets drawn.
    package graph;
    import java.awt.*;
    import javax.swing.*;
    import java.util.ArrayList;
    public class Line extends JComponent {
         //======================================================================
         //DATA FIELDS
         //======================================================================
         private int width, height, gap, numRate;
         private int lineThickness;
         private Color lineColor;
         private ArrayList x, y;
         private int cnt;
         private boolean draw;
         //======================================================================
         //CONSTRUCTER
         //======================================================================
         public Line(int w, int h, int gap, int numRate, int thick, Color color) {
              width = w;
              height = h;
              this.gap = gap;
              this.numRate = numRate;
              lineThickness = thick / 2;
              lineColor = color;
              x = new ArrayList();
              y = new ArrayList();
              cnt = 0;
              draw = false;
         //======================================================================
         //MODIFIERS
         //======================================================================
         public void setDraw(boolean draw) {
              this.draw = draw;
              System.out.println("Drawing " + draw);
              repaint();
         //======================================================================
         //OPERATIONS
         //======================================================================
         public void addPoint(float x, float y) {
              this.x.add(new Integer(convertX(x)));
              this.y.add(new Integer(convertY(y)));
              //System.out.println(" CNT: " + cnt + " x: " + this.x.get(cnt) + " y: " + this.x.get(cnt));
              cnt++;
         public void paint(Graphics g) {
              System.out.println("p");
              if (draw)
                   drawLine(g);
         public void drawLine(Graphics g) {
              g.setColor(lineColor);
              for (int i = 0; i < width - 1; i++)
                   int x1 = convertToInt((Integer) x.get(i));
                   int y1 = convertToInt((Integer) y.get(i));;
                   int x2 = convertToInt((Integer) x.get(i+1));
                   int y2 = convertToInt((Integer) y.get(i+1));
                   g.drawLine(x1,y1,x2,y2);
                   g.drawLine(x1, y2 - lineThickness, x1, y2 + lineThickness);
         public int convertToInt(Integer i) {
              return i.intValue();
         public int convertX(float x) {
              if (x < 0)
                   x *= -1;
                   x *= gap / numRate;
                   return width / 2 - (int) x;
              } else
                   x *= gap / numRate;
                   return width / 2 + (int) x;
         public int convertY(float y) {
              if (y < 0)
                   y *= -1;
                   y *= gap / numRate;
                   return width / 2 + (int) y;
              } else
                   y *= gap / numRate;
                   return width / 2 - (int) y;
    }The console output is:
    Drawing true
    Where it should be atleast:
    Drawing true
    p
    Thanks in advance for your help

    Maybe you should try to use g.drawString()
    instead...
    Regards,
    GuidoAre you talking about the System.out? I'm just trying to use that to see if the method is being called at all. If it is, a "p" should appear in the console window, it doesn't! I need help figuring out why!
    Thanks in advance!

  • Repaint() method is not working in MAC IE

    Hi All
    why repaint method is not working in MAC IE ? What i am doing is in one class which is inheriting Canvas class getting the keybord input then adding it to main applet.
    Please help me i am trying it for whole week and i couldn't find any solution. I didn't put my code but if anyone is willing to help me i can post it.
    Thanks in advancs
    Shan

    Hi
    Thanks for your reply. Actually i wrote simple applets and those are working well.
    So i did debug the code and i found that when i am running the following code in Apple MAC IE, nothing is happening in handleEvent method. Especially it is not going into the if statement (if (evt.id==401)). here i am checking for KEY_PRESS. I also tried with keyDown method but same problem in MAC IE.
    I am pasting the code that is giving me problem.
    import java.awt.*;
    import java.applet.*;
    public class testApplet extends Applet
    public void init()
    setLayout(new BorderLayout());
    editableArea = new EditableArea();
    editableArea.setBackground(Color.yellow);
    add("Center", editableArea);
    EditableArea editableArea;
    import java.awt.*;
    public class EditableArea extends Canvas
    String s = "";
    public boolean handleEvent(Event evt)
    if (evt.id==401)
    if(evt.key >= 32 && evt.key <= 255)
    char c = (char)evt.key;
    s = s + c;
    repaint();
    return super.handleEvent(evt);
    public void paint( Graphics g )
    g.setColor(Color.blue);
    g.drawString( s,5,15);
    --------------------------------------------------------------------

  • Repaint() method 's not work but paint(getGraphics()) does, why?

    I've just read the following code ( in the Core Java 2 advance features vol 2 book):
      import java.awt.*;
      import java.awt.event.*;
       import java.awt.geom.*;
       import java.util.*;
       import javax.swing.*;
          Shows an animated bouncing ball.
      public class Bounce
         public static void main(String[] args)
            JFrame frame = new BounceFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.show();
         The frame with canvas and buttons.
      class BounceFrame extends JFrame
            Constructs the frame with the canvas for showing the
            bouncing ball and Start and Close buttons
         public BounceFrame()
            setSize(WIDTH, HEIGHT);
            setTitle("Bounce");
            Container contentPane = getContentPane();
            canvas = new BallCanvas();
            contentPane.add(canvas, BorderLayout.CENTER);
            JPanel buttonPanel = new JPanel();
            addButton(buttonPanel, "Start",
               new ActionListener()
                     public void actionPerformed(ActionEvent evt)
                        addBall();
            addButton(buttonPanel, "Close",
               new ActionListener()
                     public void actionPerformed(ActionEvent evt)
                       System.exit(0);
            contentPane.add(buttonPanel, BorderLayout.SOUTH);
            Adds a button to a container.
            @param c the container
            @param title the button title
            @param listener the action listener for the button
         public void addButton(Container c, String title,
            ActionListener listener)
            JButton button = new JButton(title);
            c.add(button);
            button.addActionListener(listener);
            Adds a bouncing ball to the canvas and makes
            it bounce 1,000 times.
         public void addBall()
            try
               Ball b = new Ball(canvas);
               canvas.add(b);
               for (int i = 1; i <= 1000; i++)
                  b.move();
                  Thread.sleep(5);
            catch (InterruptedException exception)
         private BallCanvas canvas;
         public static final int WIDTH = 450;
         public static final int HEIGHT = 350;
        The canvas that draws the balls.
    class BallCanvas extends JPanel
            Add a ball to the canvas.
            @param b the ball to add
       public void add(Ball b)
           balls.add(b);
        public void update(Graphics g) {
             super.update(g);
             System.out.println("Test");
        public void paintComponent(Graphics g)
          super.paintComponent(g);
          Graphics2D g2 = (Graphics2D)g;
          for (int i = 0; i < balls.size(); i++)
             Ball b = (Ball)balls.get(i);
             b.draw(g2);
            // System.out.println("Test");
        private ArrayList balls = new ArrayList();
        A ball that moves and bounces off the edges of a
       component
    class Ball
            Constructs a ball in the upper left corner
            @c the component in which the ball bounces
        public Ball(Component c) { canvas = c; }
           Draws the ball at its current position
           @param g2 the graphics context
        public void draw(Graphics2D g2)
           g2.fill(new Ellipse2D.Double(x, y, XSIZE, YSIZE));
          Moves the ball to the next position, reversing direction
          if it hits one of the edges
       public void move()
          x += dx;
          y += dy;
           if (x < 0)
              x = 0;
              dx = -dx;
         if (x + XSIZE >= canvas.getWidth())
             x = canvas.getWidth() - XSIZE;
              dx = -dx;
           if (y < 0)
             y = 0;
              dy = -dy;
           if (y + YSIZE >= canvas.getHeight())
              y = canvas.getHeight() - YSIZE;
              dy = -dy;
           //canvas.paint(canvas.getGraphics());//this would OK.
           canvas.repaint();//This not work, please tell me why?
        private Component canvas;
        private static final int XSIZE = 15;
       private static final int YSIZE = 15;
       private int x = 0;
       private int y = 0;
       private int dx = 2;
       private int dy = 2;
    }this program create a GUI containing a "add ball" button to creat a ball and make it bounce inside the window. ( this seems to be stupid example but it is just an example of why we should use Thread for the purpose ).
    Note: in the move() method, if i use canvas.repaint() then the ball is not redrawn after each movement. but if i use canvas.paint(canvas.getGraphics()) then everythings seem to be OK.
    Another question: Still the above programe, but If I create the ball and let it bounce in a separate thread, then canvas.repaint() in the move method work OK.
    Any one can tell me why? Thanks alot !!!

    I don't know why the one method works. Based on my Swing knowledge neither method should work. Did you notice that the JButton wasn't repainted until after the ball stopped bouncing. That is because of the following code:
    for (int i = 1; i <= 1000; i++)
        b.move();
        Thread.sleep(5);
    }This code is attempting to move the ball and then sleep for 5 milliseconds. The problem with this code is that you are telling the Event Thread to sleep. Normally painting events are added to the end of the Event Thread to allow for multiple painting requests to be combined into one for painting efficiency. When you tell the Thread to sleep then the GUI doesn't get a chance to repaint itself.
    More details about the EventThread can be found in the Swing tutorial:
    http://java.sun.com/docs/books/tutorial/uiswing/misc/threads.html
    This explains why the button isn't repainted, but it doesn't explain why the ball bounces. I don't know the answer to this for sure, but I do know that there is a method called paintImmediately(...) which causes the painting to be performed immediately without being added to the end of the Event Thread. This means the painting can be done before the Thread sleeps. Maybe the canvas.paint(....) is somehow invoking this method.
    When you click on the button this code is executed in the EvWell in Swing, all GUI painting is done on the Event Thread

  • AWT part doen not work on win2k

    I cannot run the AWT/GUI applications on my win2k machine. I have tried jdk 1.3 and 1.4with multiple installs/uninstalls. I have also tried to clean up the registry entries. Command line java applications work fine. The java plugin 1.3 or 1.4 in IE and Netscape does not work either although IE loads/runs applets fine when using Microsoft VM. Can anybody point me in the right direction to fix this issue ? Are there any files/registry entries I should clean after uninstalling jdk to clean uninstall ?
    Thanks in advance.
    --Navjeet                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    Problem is fixed now. I scanned the registries again to delete references to one of my previous jdk install. After that I installed jre/plugin 1.4.1 and the applets started to work. After that I installed jdk 1.4.1 and everything (awt/gui/command line applications) seems to work.
    --Navjeet

  • WHY I called "repaint(),invalidate(),paintImmediately()..." NOT WORK!!!

    Hi,I have a Panel,its structure is like this:
    JPanel [JScrollPane
                 [JPanel
                      [JLayeredPane
    mains: the whole panel contains a scrollpanel,the scrollpanel's
    view port is a background panel,the background panel contains
    a layeredpanel,I put nodes onto the layered panel.
    When something occurs,I would call "wholePanel.getContentPanel.removeAll()"
    that would call the layeredPanel's removeAll() method.
    But nothing happened when I call removeAll.I have called repaint() ,invalidate(),paintImmediately() after removeAll() .but still not work!!!
    Why ,I am very confused.......:(
    private void constructWholePanel() {
    setLayout(new BorderLayout());
    jsp = new JScrollPane();
    ImageIcon icon = new ImageIcon(Tools.getImage("background.png"));
    JPanel bgp = new BGPanel(icon.getImage());
    jsp.setViewportView(bgp);
    this.add(jsp, BorderLayout.CENTER);
    JLayeredPane contentPanel = new MapCanvas();
    contentPanel.setOpaque(false);
    contentPanel.setPreferredSize(bgp.getPreferredSize());
    contentPanel.setLayout(null);
    bgp.add(contentPanel);

    After you add/remove components to/from a container you have to call revalidate() on the container.
    Sven

  • Java.awt.Image getWidth() and getHeight() not working!

    Right- this is want I want to do.
    I have a background image which is added as a background image to a third party API class which extends Java.awt.Container. Such container is then added to the Content Pane of MyClass (which extends JFrame)
    I want to read the width and height of the image and resize MyClass accordingly.
    Problem is calling theImage.getWidth(MyClass.this) or theImage.getWidth(theThirdPartyAPIContainer) always return -1 and -1 denoting that no information is available.
    What do I need to do to obtain the height and width?

    Post here, cos don't know your email.
    Anyway
    - Can't use setPreferredSize because the Conatiner which is added to the ContentPane is a Awt Component not a Swing JComponent!
    - Also, the background is added AFTER the this.pack()and this.show().
    -I figured out that I could access Insets.top, Insets.left, Insets.right, Insets.bottom.
    I have basically the following
    |JMenuBar |
    L____________________________________________|
    | |
    | |
    | |
    | Third Party Class extending java.awt.Container |
    | containing an image of known size |
    | |
    L____________________________________________|
    I am fine for the width I do
    Insets frameInsets = this.getInsets();
    width = image.getWidth() + frameInsets.left + frameInsets.right;
    Height is the problem
    After some Trial an error it LOOKS on Solaris as if the following is right-
    height = image.getHeight()+frameInsets.top+ myJMenuBar.getSize()+getHeight+ myJMenuBar.getInsets().top + myJMenuBar.getInsets().bottom
    I cannot comprehend whether this is just a coincidence or not as I don't know why frameInsets.bottom should in any case be excluded.
    Here are the dimensions-
    frameInsets.left = 6
    frameInsets.right= 6
    frameInsets.top =28
    frameInsets.bottom = 6
    JMenuBar height = 23
    JMenuBar's Insets.top = 1
    JMenuBar's Insets.bottom = 1
    What should be the 'correct' calculations and does the Insets for the JMenuBar and the JFrame overlaps?

  • Why table getWidth and setWidth is not working when resize column the table

    hi all,
    i want to know why the setWidth is not working in the following code,
    try to uncomment the code in columnMarginChanged method and run it wont resize the table.
    i cont set width(using setWidth) of the other table column using getWidth of the main table column.
    and i want to resize the right side columns only (you can check when you resize the any column the left and right side columns also resizing)
    any suggestions could be helpful.
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.Box;
    import javax.swing.BoxLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTable;
    import javax.swing.SwingUtilities;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.TableColumnModelEvent;
    import javax.swing.event.TableColumnModelListener;
    import javax.swing.table.TableColumnModel;
    public class SynTableResize extends JFrame implements TableColumnModelListener, ActionListener
        JTable  table1       = new JTable(5, 5);
        JTable  table2       = new JTable(5, 5);
        JTable  table3       = new JTable(5, 5);
        JButton btn          = new JButton("refresh");
        JPanel  pnlcontainer = new JPanel();
        public SynTableResize()
            setLayout(new BorderLayout());
            pnlcontainer.setLayout(new BoxLayout(pnlcontainer, BoxLayout.Y_AXIS));
            pnlcontainer.add(table1.getTableHeader());
            pnlcontainer.add(Box.createVerticalStrut(5));
            pnlcontainer.add(table2);
            pnlcontainer.add(Box.createVerticalStrut(5));
            pnlcontainer.add(table3);
            table2.setTableHeader(null);
            table3.setTableHeader(null);
            table1.getColumnModel().addColumnModelListener(this);
            table3.setColumnModel(table1.getColumnModel());
            table2.setColumnModel(table1.getColumnModel());
            table2.getColumnModel().addColumnModelListener(table1);
            table3.getColumnModel().addColumnModelListener(table1);
            btn.addActionListener(this);
            getContentPane().add(pnlcontainer, BorderLayout.CENTER);
            getContentPane().add(btn, BorderLayout.SOUTH);
            setSize(new Dimension(400, 400));
            setVisible(true);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
        public static void main(String[] args)
            new SynTableResize();
        public void columnAdded(TableColumnModelEvent e)
        public void columnMarginChanged(ChangeEvent e)
            TableColumnModel tcm = table1.getColumnModel();
            int columns = tcm.getColumnCount();
            for (int i = 0; i < columns; i++)
                table2.getColumnModel().getColumn(i).setPreferredWidth(tcm.getColumn(i).getWidth());
                table3.getColumnModel().getColumn(i).setPreferredWidth(tcm.getColumn(i).getWidth());
                // the following commented code wont work.
    //            table2.getColumnModel().getColumn(i).setPreferredWidth(tcm.getColumn(i).getPreferredWidth());
    //            table3.getColumnModel().getColumn(i).setPreferredWidth(tcm.getColumn(i).getPreferredWidth());
    //            table2.getColumnModel().getColumn(i).setWidth(tcm.getColumn(i).getWidth());
    //            table3.getColumnModel().getColumn(i).setWidth(tcm.getColumn(i).getWidth());
            SwingUtilities.invokeLater(new Runnable()
                public void run()
                    table2.revalidate();
                    table3.revalidate();
        public void columnMoved(TableColumnModelEvent e)
        public void columnRemoved(TableColumnModelEvent e)
        public void columnSelectionChanged(ListSelectionEvent e)
        public void actionPerformed(ActionEvent e)
            JTable table = new JTable(5, 5);
            table.setColumnModel(table1.getColumnModel());
            table.getColumnModel().addColumnModelListener(table1);
            pnlcontainer.add(Box.createVerticalStrut(5));
            pnlcontainer.add(table);
            pnlcontainer.validate();
            pnlcontainer.repaint();
    }thanks
    dayananda b v

    hi,
    thanks for your replay,
    yes i know that, you can check the following code it works fine.
    actually what i want is, when i resize table column it shold not automaticaly reszie when table resized and i dont want horizontal scroll bar, meaning that all table columns should resize with in the table size(say width 300)
    if i make table autoresize off than horizontal scroll bar will appear and the other columns moved and i want scroll to view other columns.
    please suggest me some way doing it, i tried with doLayout() no help,
    doLayout() method only can be used when table resizes. first off all i want to restrict table resizing with in the limited size
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import javax.swing.Box;
    import javax.swing.BoxLayout;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.event.ChangeEvent;
    import javax.swing.table.TableColumnModel;
    public class TempSycnTable extends JFrame
        JTable  table1       = new JTable(5, 5);
        MyTable table2       = new MyTable(5, 5);
        MyTable table3       = new MyTable(5, 5);
        JPanel  pnlcontainer = new JPanel();
        public TempSycnTable()
            JScrollPane src2 = new JScrollPane(table2);
            JScrollPane src3 = new JScrollPane(table3);
    //        table1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    //        table2.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    //        table3.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    //        src2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    //        src3.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
            table2.setTableHeader(null);
            table3.setTableHeader(null);
            table3.setColumnModel(table1.getColumnModel());
            table2.setColumnModel(table1.getColumnModel());
            table2.getColumnModel().addColumnModelListener(table1);
            table3.getColumnModel().addColumnModelListener(table1);
            table2.setTableHeader(null);
            table3.setTableHeader(null);
            setLayout(new BorderLayout());
            pnlcontainer.setLayout(new BoxLayout(pnlcontainer, BoxLayout.Y_AXIS));
            pnlcontainer.add(table1.getTableHeader());
            pnlcontainer.add(Box.createVerticalStrut(5));
            pnlcontainer.add(src2);
            pnlcontainer.add(Box.createVerticalStrut(5));
            pnlcontainer.add(src3);
            getContentPane().add(pnlcontainer, BorderLayout.CENTER);
            setSize(new Dimension(300, 300));
            setVisible(true);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
        public static void main(String[] args)
            new TempSycnTable();
        class MyTable extends JTable
            public MyTable()
                super();
            public MyTable(int numRows, int numColumns)
                super(numRows, numColumns);
            public void columnMarginChanged(ChangeEvent event)
                final TableColumnModel eventModel = table1.getColumnModel();
                final TableColumnModel thisModel = getColumnModel();
                final int columnCount = eventModel.getColumnCount();
                for (int i = 0; i < columnCount; i++)
                    thisModel.getColumn(i).setWidth(eventModel.getColumn(i).getWidth());
                repaint();
    }thanks
    daya

  • 'NAVIGATE_ABSOLUTE' method is not working in UWL

    We are working on Portal 7.0.
    Recently We have upgraded from SP 13-0 To 13-5.
    After this upgradation We are facing some problems, following is the scenario:
    1.     We have a ABAP Web DynPro Application say 'A', which has button "View Details".
    2.     On Clicking of "View_Details"  We navigate to other ABAP Web DynPro Application say 'B' .
         This was done using the 'NAVIGATE_ABSOLUTE' method of the 'IF_WD_PORTAL_INTEGRATION'.
    3.     Now The Same Application 'A' is being send as the Workitem to Approver's inbox.
    4.     Approver also was able to click on 'View_Details' button and  Application 'B' used to call using 'NAVIGATE_ABSOLUTE'.
    5.     After upgradation, Point 2 is working fine. but point 4 is not working i.e. 'NAVIGATE_ABSOLUTE' functionality is not working when the application is send as workitem.
    Please guide us for the above problem. Points assured for best solution.

    Hi
    Thanks for your reply. Actually i wrote simple applets and those are working well.
    So i did debug the code and i found that when i am running the following code in Apple MAC IE, nothing is happening in handleEvent method. Especially it is not going into the if statement (if (evt.id==401)). here i am checking for KEY_PRESS. I also tried with keyDown method but same problem in MAC IE.
    I am pasting the code that is giving me problem.
    import java.awt.*;
    import java.applet.*;
    public class testApplet extends Applet
    public void init()
    setLayout(new BorderLayout());
    editableArea = new EditableArea();
    editableArea.setBackground(Color.yellow);
    add("Center", editableArea);
    EditableArea editableArea;
    import java.awt.*;
    public class EditableArea extends Canvas
    String s = "";
    public boolean handleEvent(Event evt)
    if (evt.id==401)
    if(evt.key >= 32 && evt.key <= 255)
    char c = (char)evt.key;
    s = s + c;
    repaint();
    return super.handleEvent(evt);
    public void paint( Graphics g )
    g.setColor(Color.blue);
    g.drawString( s,5,15);
    --------------------------------------------------------------------

  • Chechbox header : deselect all not working

    folks,
    I have a jtable generated from my database. IT has 3 columns . The 3rd column has checkboxes in it. I am implementing a "CHECK ALL"
    checkbox on the header for selection and deselection of checkboxes. the below code works for selection of all boxes.. IT DOES NOT
    WORK WHEN IT IS DESELECTED ? i want to make it work for deselection also
    I call the custom table renderer from main program as follows :
    tc = table.getColumnModel().getColumn(3);
    tc.setHeaderRenderer(new CustomTableCellRenderer1(new MyItemListener(),Name));
    this is item listner in main program for checkbox "check all" present in the table header :
    class MyItemListener implements ItemListener
    public void itemStateChanged(ItemEvent e) {
    Object source = e.getSource();
    if (source instanceof AbstractButton == false) return;
    boolean checked=e.getStateChange() == ItemEvent.SELECTED;
    for(int x = 0, y = table.getRowCount(); x < y; x++)
    table.setValueAt(new Boolean(checked),x,3);
    if (e.getStateChange() == ItemEvent.DESELECTED) // dosent work
    System.out.println("deselect all"); // may b code for deselection
    this is CustomTableCellRenderer1 class below:
    package moxaclient;
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.table.*;
    import java.awt.event.*;
    class CustomTableCellRenderer1 extends JCheckBox
    implements TableCellRenderer, MouseListener {
    private static final long serialVersionUID = 1L;
    protected CustomTableCellRenderer1 rendererComponent;
    protected int column;
    String Name;
    private JTable table1;
    Object abc=null;
    protected boolean mousePressed = false;
    public CustomTableCellRenderer1(ItemListener itemListener,String name) {
    rendererComponent = this;
    rendererComponent.addItemListener(itemListener);
    this.Name=name;
    public Component getTableCellRendererComponent(
    JTable table, Object value,
    boolean isSelected, boolean hasFocus, int row, int column) {
    if (table != null) {
    JTableHeader header = table.getTableHeader();
    this.table1=table;
    if (header != null) {
    rendererComponent.setForeground(header.getForegrou nd());
    rendererComponent.setBackground(header.getBackgrou nd());
    rendererComponent.setFont(header.getFont());
    header.addMouseListener(rendererComponent);
    setColumn(column);
    rendererComponent.setText("Check All");
    setBorder(UIManager.getBorder("TableHeader.cellBor der"));
    return rendererComponent;
    protected void setColumn(int column) {
    this.column = column;
    public int getColumn() {
    return column;
    protected void handleClickEvent(MouseEvent e) {
    if (mousePressed) {
    mousePressed=false;
    JTableHeader header = (JTableHeader)(e.getSource());
    JTable tableView = header.getTable();
    TableColumnModel columnModel = tableView.getColumnModel();
    int viewColumn = columnModel.getColumnIndexAtX(e.getX());
    int column = tableView.convertColumnIndexToModel(viewColumn);
    if (viewColumn == this.column && e.getClickCount() == 1 && column != -1) {
    doClick();
    int row=table1.getRowCount();
    if(row!=0)
    for(int i=0;i<=row-1;i++)
    String Sensor =(String) table1.getValueAt(i, column-3); // // when checkbox selectedthis code gets all value present in table and stores in string abc
    Double Value =(Double) table1.getValueAt(i, column-2);
    String Date =(String) table1.getValueAt(i, column-1);
    abc += Sensor+"\t"+Value+"\t"+Name+"\t"+Date+"\t";
    public void mouseClicked(MouseEvent e) {
    handleClickEvent(e);
    ((JTableHeader)e.getSource()).repaint();
    public void mousePressed(MouseEvent e) {
    mousePressed = true;
    public void mouseReleased(MouseEvent e) {
    public void mouseEntered(MouseEvent e) {
    public void mouseExited(MouseEvent e) {
    plzz help.

    please add tags around the code in your posts.
    Dinud123 wrote:
    IT DOES NOT
    WORK WHEN IT IS DESELECTED ? i want to make it work for deselection alsoI don't know any user interface where I would toggle "select all" and "deselect all" via the same control. That may be for a reason.
    So my suggestion is: provide a second button for "deselect all".
    bye
    TPD                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • KeyListener not working in Linux

    Hello guys, I'm having a weird problem I was hoping I could get resolved.
    I finished a Pong applet for my Java class, and it works just fine under Windows and on my Mac.
    But when I run it under Linux, the Applet doesn't work correctly.
    The applet draws, and my timer works, but my KeyListener does not work.
    I believe all of my Java files are updated properly.
    But I do not understand why KeyListener does not work under Linux, but it does in Windows.
    I then made a very basic applet just to test my KeyListener, and it still does not work.
    This is how I was taught to do KeyListeners, but if I'm doing something wrong, please help me out!
    here is the basic program code:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Test extends JApplet implements KeyListener
    int x = 0;
    int y = 250;
    public void init()
    addKeyListener(this);
    public void paint(Graphics g)
    g.setColor(Color.white);
    g.fillRect(0,0,500,500);
    g.setColor(Color.black);
    g.fillRect(x,y,50,50);
    public void keyPressed(KeyEvent event)
    int keyCode = event.getKeyCode();
    if(keyCode == KeyEvent.VK_RIGHT)
    x += 10;
    public void keyReleased(KeyEvent event)
    public void keyTyped(KeyEvent event)

    What if don't use a KeyListener but instead use key binding? For instance,
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    @SuppressWarnings("serial")
    public class Test2 extends JPanel {
      private static final int DELTA_X = 10;
      private static final int DELTA_Y = DELTA_X;
      private static final Dimension MAIN_SIZE = new Dimension(600, 600);
      enum Arrows {
        LEFT(KeyEvent.VK_LEFT, -DELTA_X, 0),
        RIGHT(KeyEvent.VK_RIGHT, DELTA_X, 0),
        UP(KeyEvent.VK_UP, 0, -DELTA_Y),
        DOWN(KeyEvent.VK_DOWN, 0, DELTA_Y);
        private int keyCode;
        private int deltaX, deltaY;
        private Arrows(int keyCode, int deltaX, int deltaY) {
          this.keyCode = keyCode;
          this.deltaX = deltaX;
          this.deltaY = deltaY;
        public int getDeltaX() {
          return deltaX;
        public int getDeltaY() {
          return deltaY;
        public int getKeyCode() {
          return keyCode;
      int x = 0;
      int y = 250;
      public Test2() {
        setBackground(Color.white);
        setPreferredSize(MAIN_SIZE);
        InputMap inMap = getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
        ActionMap actMap = getActionMap();
        for (Arrows arrow : Arrows.values()) {
          inMap.put(KeyStroke.getKeyStroke(arrow.getKeyCode(), 0), arrow);
          actMap.put(arrow, new MyAction(arrow));
      private class MyAction extends AbstractAction {
        private Arrows arrow;
        public MyAction(Arrows arrow) {
          this.arrow = arrow;
        public void actionPerformed(ActionEvent e) {
          x += arrow.getDeltaX();
          y += arrow.getDeltaY();
          repaint();
      @Override
      public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.black);
        g.fillRect(x, y, 50, 50);
    import javax.swing.JApplet;
    @SuppressWarnings("serial")
    public class TestApplet extends JApplet {
      public void init() {
        try {
          javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
            public void run() {
              createGUI();
        } catch (Exception e) {
          System.err.println("createGUI didn't successfully complete");
      private void createGUI() {
        getContentPane().add(new Test2());
    }

  • Code not working... again :P

    This is my 'paddle' game. You bounce a ball around the around the screen, and it's all working. I'm on the final part, which is what happens when you miss the ball (it goes off the left side of the screen). I'd like to print out a message to the middle of my screen saying "Press R to Reset", while the ball is not anywhere to be seen on the screen (is there a way I can get it to stop moving? my method right now is just to place it far away off screen, which just doesn't seem very professional to me). I made an if statement that should control this, but it's not working (when the you miss the ball, it disappears but nothing prints to the screen, and pressing R doesn't do anything either ) .
    To skip quickly to the if statement just use the find option in your browser and put in 'PROBLEM'
    This is all written in an applet.
    This is my code:
    int width, height, x, ypaddle, xball = 1, yball = 1, xctrl = 1, yctrl = 1, speed = 5, scorekeeper = 0, startkeeper = 0, keykeeper;
        Graphics g;
        String startagain;
        char move;
        Thread run;
        private Random random = new Random ();
        int ballstart = random.nextInt (400);
         *Initializes variables
        public void init ()
            resize (700, 500);
            setBackground (Color.white);
            addKeyListener (this);
            addMouseListener (this);
            addMouseMotionListener (this);
            run = new Thread (this);
            run.start ();
            startagain = "To Reset Press R";
            xball = ballstart;
            yball = ballstart;
        public void run ()
            while (true)
                try
                    run.sleep (50);
                    if (xctrl == 1 && startkeeper == 0)
                        xball = xball + speed;
                    if (yctrl == 1 && startkeeper == 0)
                        yball = yball + speed;
                    if (xctrl == 0 && startkeeper == 0)
                        xball = xball - speed;
                    if (yctrl == 0 && startkeeper == 0)
                        yball = yball - speed;
                    if (xball + 50 >= 660 && startkeeper == 0)
                        xball = xball - speed;
                        xctrl = 0;
                    if ((xball + 50) < 15 && yball <= ypaddle + 50 && yball >= ypaddle - 70 && startkeeper == 0)
                        xball = xball + speed;
                        xctrl = 1;
                    if (yball + 50 >= 460 && startkeeper == 0)
                        yball = yball - speed;
                        yctrl = 0;
                    if (yball + 50 <= 35 && startkeeper == 0)
                        yball = yball + speed;
                        yctrl = 1;
    //PROBLEM BELOW
                    if (xball + 50 <= 0 && startkeeper == 0)
                        if (xball + 50 <= 0)
                            yball = -100;
                            xball = -100;
                            repaint ();
                            g.drawString (startagain, 300, 300);
                        if (xball + 50 <= 0 && startkeeper == 1)
                            scorekeeper = scorekeeper + 1;
                            xball = ballstart;
                            yball = ballstart;
                            startkeeper = 0;
                    repaint ();
                catch (Exception e)
        public void keyPressed (KeyEvent e)
            keykeeper = e.getKeyChar ();
            if (keykeeper == 'r')
                startkeeper = 1;
                keykeeper = 'x';
        }

    For a public Usenet forum, most readers will stop reading by 20Kb, and start complaining at 30Kb.
    lol, I have a long way to go before i make programs that big :P
    By incompatible snippet, do you mean I should post the whole thing? Here it is:
    // The "Ping" class.
    import java.applet.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.Random;
    *Ping
    *@author Lenny
    public class Ping extends Applet
        implements KeyListener, MouseListener, MouseMotionListener, Runnable
        int width, height, x, ypaddle, xball = 1, yball = 1, xctrl = 1, yctrl = 1, speed = 5, scorekeeper = 0, startkeeper = 0, keykeeper;
        Graphics g;
        String startagain;
        char move;
        Thread run;
        private Random random = new Random ();
        int ballstart = random.nextInt (400);
         *Initializes variables
        public void init ()
            resize (700, 500);
            setBackground (Color.white);
            addKeyListener (this);
            addMouseListener (this);
            addMouseMotionListener (this);
            run = new Thread (this);
            run.start ();
            startagain = "To Reset Press R";
            xball = ballstart;
            yball = ballstart;
        public void run ()
            while (true)
                try
                    run.sleep (50);
                    if (xctrl == 1 && startkeeper == 0)
                        xball = xball + speed;
                    if (yctrl == 1 && startkeeper == 0)
                        yball = yball + speed;
                    if (xctrl == 0 && startkeeper == 0)
                        xball = xball - speed;
                    if (yctrl == 0 && startkeeper == 0)
                        yball = yball - speed;
                    if (xball + 50 >= 660 && startkeeper == 0)
                        xball = xball - speed;
                        xctrl = 0;
                    if ((xball + 50) < 15 && yball <= ypaddle + 50 && yball >= ypaddle - 70 && startkeeper == 0)
                        xball = xball + speed;
                        xctrl = 1;
                    if (yball + 50 >= 460 && startkeeper == 0)
                        yball = yball - speed;
                        yctrl = 0;
                    if (yball + 50 <= 35 && startkeeper == 0)
                        yball = yball + speed;
                        yctrl = 1;
    //PROBLEM HERE
                    if (xball + 50 <= 0 && startkeeper == 0)
                        if (xball + 50 <= 0)
                            yball = -100;
                            xball = -100;
                            repaint ();
                            g.drawString (startagain, 300, 300);
                        if (xball + 50 <= 0 && startkeeper == 1)
                            scorekeeper = scorekeeper + 1;
                            xball = ballstart;
                            yball = ballstart;
                            startkeeper = 0;
                    repaint ();
                catch (Exception e)
        public void keyPressed (KeyEvent e)
            keykeeper = e.getKeyChar ();
            if (keykeeper == 'r')
                startkeeper = 1;
                keykeeper = 'x';
        public void keyReleased (KeyEvent e)
        public void keyTyped (KeyEvent e)
        public void mouseEntered (MouseEvent e)
        public void mouseExited (MouseEvent e)
        public void mousePressed (MouseEvent e)
        public void mouseReleased (MouseEvent e)
        public void mouseClicked (MouseEvent e)
        public void mouseMoved (MouseEvent e)
            ypaddle = e.getY ();
            repaint ();
        public void mouseDragged (MouseEvent e)
        public void paint (Graphics g)
            paddle (g, ypaddle);
            walls (g);
            //enemies (g);
            ball (g);
         * Creates the paddle for hitting the ball
         *@param    y   value used to move the paddle vertically
        public void paddle (Graphics g, int y)
            g.fillRect (10, y - 25, 15, 70);
         *Creates the walls for the ball to bounce off of.
        public void walls (Graphics g)
            g.setColor (Color.yellow);
            g.fillRect (25, 10, 675, 25);
            g.setColor (Color.red);
            g.fillRect (675, 10, 25, 475);
            g.setColor (Color.cyan);
            g.fillRect (25, 475, 675, 25);
         *Creates the enemies to avoid.
        public void enemies (Graphics g)
            int place1 = random.nextInt (1000);
            int place1a = random.nextInt (1000);
            int place2 = random.nextInt (1000);
            int place2a = random.nextInt (1000);
            g.setColor (Color.black);
            g.fillOval (place1, place1a, 10, 10);
        public void ball (Graphics g)
            g.setColor (Color.black);
            g.fillRect (xball + 50, yball + 50, 20, 20);
            g.setColor (Color.white);
            g.fillRect (xball + 53, yball + 55, 5, 5);
            g.fillRect (xball + 63, yball + 55, 5, 5);
            g.fillRect (xball + 56, yball + 63, 9, 5);
    } // Ping classEdited by: soundweave on Jan 16, 2010 7:54 PM

  • Draw method is not working

    Why the drawLine() is working only inside the paint method??
    BufferedImage image = new BufferedImage(800,500,BufferedImage.TYPE_INT_ARGB);
         Graphics2D g = (Graphics2D)image.getGraphics();
    public void paint(Graphics g)
                   g.setColor(Color.black);
                             //Here, the drawLine() method works
                   g.drawLine(50,0,50,150);
    public void paintX(Graphics g,Point c)
                        //Here, the drawLine() method does not work
                        g.setColor(Color.black);
                   g.drawLine(0-e,0-e,50-e,50-e);
                   g.drawLine(0-e,50-e,50-e,0-e);
                   repaint();
         }

    er, unless you're using JDK 1.5 and it introduces methods I know nothing about, as far as I know
    public void paintX(..) is not a AWT or Swing method. Thus it will never be invoked unless you call it.

Maybe you are looking for