Hallo!
I am new in java programming and i am trying to create animation in java graphics. What i am trying to do is give motion to a simple line. The code that i have created so far is the following:
I think that the problem is in the class update. When i run the program i get a rectungle instead of a moving line. Please Help me!Code:import java.awt.*; import java.awt.event.*; import javax.swing.*; public class My extends JPanel implements ActionListener { private JFrame f; private JMenuBar jmb; private JMenu selectMenu; private JMenuItem quitItem; private JMenuItem againItem; private JMenuItem helloItem; private int horizontialDimension; private int verticalDimension; private int index; Graphics display; Font font; InnerThread in; Thread tr; public My() { setSize(600,400); f = new JFrame("My"); f.setSize(600, 400); jmb = new JMenuBar(); selectMenu = new JMenu("Select"); quitItem = new JMenuItem("Quit"); againItem = new JMenuItem("Do it Again"); helloItem = new JMenuItem("Say Hello"); quitItem.addActionListener(this); againItem.addActionListener(this); helloItem.addActionListener(this); selectMenu.add(quitItem); selectMenu.add(againItem); selectMenu.add(helloItem); jmb.add(selectMenu); f.getContentPane().add(jmb, BorderLayout.NORTH); f.getContentPane().add(this, BorderLayout.CENTER); horizontialDimension = getSize().width; verticalDimension = getSize().height; f.setVisible(true); display = getGraphics(); font = new Font("TimesRoman", Font.BOLD, 36); } public void paint(Graphics g) { g.setColor(Color.blue); g.drawLine(220,100,220,120); //left arrow } public void update(Graphics g) { for (int x=220; x<300; x++){ int y1=(int)(x); int y2=(int)(x); g.drawLine(y1,100,y2,120); } } public void actionPerformed(ActionEvent ae){ if(ae.getSource()==quitItem) { System.exit(0); } else if(ae.getSource()==againItem) { in = new InnerThread(); tr = new Thread(in); tr.start(); System.out.println("Again!!!"); } else { System.out.println("Hello!!!"); } } public static void main(String[] args){ My st = new My(); InnerThread stin = st.new InnerThread(); Thread t = new Thread(stin); t.start(); } public class InnerThread implements Runnable { public void run() { My.this.update(display); try { Thread.currentThread().sleep(100); } catch(InterruptedException ie) {} } } }![]()




Reply With Quote