Boat Drinks  

Go Back   Boat Drinks > General > Computer and Consoles

Reply
 
Thread Tools Display Modes
Old 24-01-2008, 15:51   #1
LeperousDust
Bananaman
 
LeperousDust's Avatar
 
Join Date: Jul 2006
Location: Liverpool/Edinburgh
Posts: 4,817
Default Simple Java n00b help (hopefully seriously simple)

Were instructed to use eclipse for our java work, now on the uni lab comps they use 3.2 and 3.3 (but default is 3.2) i can't get 3.2, so i'm using 3.3.

Problem is I create a new project and load to simple ass java files into it, but i cannot for the life of my run it, when i KNOW it runs fine on the uni labs (3.2). I tried it on 3.3 on the lab comps today and it spat out the exact same error, about not being able to find the main class...:
"java.lang.NoClassDefFoundError: BounceMain
Exception in thread "main" "

I'll upload the two java files now, but i know they're Ok. What should i be looking out for?
Really getting to me this, becuase i need to start some real coding but if i can't rely on it to actually interpret or compile whats the point?
__________________
LeperousDust is offline   Reply With Quote
Old 24-01-2008, 16:15   #2
LeperousDust
Bananaman
 
LeperousDust's Avatar
 
Join Date: Jul 2006
Location: Liverpool/Edinburgh
Posts: 4,817
Default

Right beansprouts uploader doesn't like java or txt files... So unfortunately you get them posted here!

BounceMain
Code:
import javax.swing.*;

/*************************************************
 * This is the main application class.
 * All it does is initialize the application,
 * and open a single window.
 * BouncePanel does all the work.
 *************************************************/

public class BounceMain {
	JFrame      mainWindow;
	BouncePanel helloPanel;
	
	// Create a new window, and put helloPanel inside it.
	public BounceMain() {
		mainWindow = new JFrame("Bouncing Ball");
		mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		helloPanel = new BouncePanel();
		mainWindow.getContentPane().add(helloPanel);
        
		mainWindow.pack();
		mainWindow.setVisible(true);
	}
    
	private static void createAndShowGUI() {
		// Make sure we have nice window decorations.
		JFrame.setDefaultLookAndFeelDecorated(false);
		// Create an actual instance of HelloBounceApp
		new BounceMain();		
	}

	public static void main(String[] args) {
		// Schedule a job for the event-dispatching thread:
		// creating and showing this application's GUI.
		javax.swing.SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				createAndShowGUI();
			}
		});
	}
}

BouncePanel
Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;

public class BouncePanel extends JComponent 
                         implements ComponentListener, Runnable {
	
	final static long serialVersionUID = 0;  // kill warning
	
    // constants
    final static BasicStroke stroke = new BasicStroke(2.0f);
      
    // fields
    float xsize,ysize;  // size of window
    float xpos,ypos;    // position of ball 
    float xlen,ylen;    // size of ball
    float speed;        // distance the ball moves in each frame
    float dx,dy;        // current speed + direction of ball 
    
    int    delay;       // delay between frames in miliseconds
    Thread animThread;  // animation thread                       
                
    /*************************************************
     * Draws the ball on the screen.
     *************************************************/                                
    public void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g.create();
        
        // get the current window size     
        Dimension dim = getSize();
        xsize = dim.width;
        ysize = dim.height; 
        
        // clear background to white
        g2.setPaint(Color.white);
        g2.fill(new Rectangle2D.Double(0,0,xsize,ysize));       
                
        // draw ball                 
        g2.setPaint(Color.red);
        g2.fill(new Ellipse2D.Double(xpos, ysize-ypos-ylen, xlen, ylen));
        g2.setColor(Color.black);
        g2.draw(new Ellipse2D.Double(xpos, ysize-ypos-ylen, xlen, ylen));
 
        g2.dispose();
    }
    
    // empty methods that are required by the GUI event loop
    public void componentHidden (ComponentEvent e)  { }
    public void componentMoved  (ComponentEvent e)  { }
    public void componentResized(ComponentEvent e)  { }
    public void componentShown  (ComponentEvent e)  { }
    
    /****************************************************
     * Checks to see if the ball has hit any walls.
     * Called from within run(). 
     ****************************************************/
    public void checkWalls() {
       if (xpos + xlen >= xsize) { 
           xpos = xsize - xlen;
           dx   = -dx;
       } 
       if (xpos < 0) {
           xpos = 0;
           dx   = -dx; 
       } 
       if (ypos + ylen >= ysize) {
           ypos = ysize - ylen;
           dy   = -dy;
       }             
       if (ypos < 0) {
           ypos = 0;
           dy   = -dy;
       }
    }
    
    /***********************************************************
     * This is the animation thread.  
     * The code here is what actually causes the ball to bounce.
     ***********************************************************/ 
    public void run() {
      while (true) {  // loop forever          
        // update position
        xpos += dx;
        ypos += dy;
                
        // check to see if the ball has hit any walls
        checkWalls();
            
        // sleep a bit until the next frame
        try { Thread.sleep(delay); } 
        catch (InterruptedException e) { break; }
        
        // refresh the display
        repaint();  
      }
    }
        
    /****************************************************
     * This is a constructor for the BouncePanel class.
     * It initializes all the values that the class needs
     * in order to work properly.
     ****************************************************/
    
    public BouncePanel() {
        // set values for all the variables
        xsize = 480;
        ysize = 360;
        xpos  = 240;
        ypos  = 180;
        xlen  = 60;
        ylen  = 60;
        speed = 5;
        dx    = speed;
        dy    = speed;
        delay = 10;
        
        // set up window properties
        setBackground(Color.white);
        setOpaque(true);
        setPreferredSize(new Dimension((int) xsize, (int) ysize));
        setFocusable(true);
        addComponentListener(this);
        
        // start the animation thread
        animThread = new Thread(this);
        animThread.start();
    }
}
__________________
LeperousDust is offline   Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +1. The time now is 10:31.


Powered by vBulletin® Version 3.7.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.