need help or explanation
I'm new to Java and I'm running into a problem I can't figure out.
I have a menu on a screen and I'm also drawing a moving filled oval on it.
When I run the program, I end up with a double menu line. It's as if
the first repaint is shifting the whole display down the size of the menu
line.
The first oval is also shifted down the size of the menu line. The rest of
the oval repaints seem to be where they should be.
Even though I have 2 menu lines, only the top menu works when I
click on it. When I click on "Menu1", I get 2 "first entry" items, one
below the other. See Menu example below.
------------------------------------------------
Menu1 (this menu works when I click on it)
------------------------------------------------
Menu1 (this menu doesn't do anything)
------------------------------------------------
-----------------------------------------------------------
Menu1 (when I click the top menu, I get 2 first entries)
-----------------------------------------------------------
first entry (the lower Menu1 is written over)
-----------------------------------------------------------
first entry
-----------------------------------------------------------
The bad part is, when I run this program at work, it works like
it's supposed to. When I run it at home, I get the double menu.
I haven't tried the program on any other PC's yet.
I'm using JCreator LE version 3.50.013 both at work and home.
My Java version is 1.6.0_17-b04 both at work and home.
I have XP Pro at work, but just XP at home.
Here is the program.
import javax.swing.*;
import java.awt.*;
public class graph1
{
int x = 70;
int y = 70;
public static void main(String[] args)
{
graph1 gui = new graph1();
gui.go();
}
public void go()
{
JMenuBar mBar = new JMenuBar();
JMenu mMenu1 = new JMenu("Menu1");
JMenuItem mItem = new JMenuItem("first entry");
mBar.add(mMenu1);
mMenu1.add(mItem);
JFrame frame = new JFrame("Graph1");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setJMenuBar(mBar);
MyPaint mp = new MyPaint();
frame.getContentPane().add(mp);
frame.setSize(600,600);
frame.setVisible(true);
for ( int i = 0; i < 200; i++ )
{
++x;
++y;
try
{
Thread.sleep(200);
}
catch(Exception ex) {}
mp.repaint();
}
}
class MyPaint extends JPanel
{
public void paintComponent(Graphics g)
{
g.setColor(Color.green);
g.fillOval(x,y,40,40);
}
}
}