PDA

View Full Version : Simple Java n00b help (hopefully seriously simple)


LeperousDust
24-01-2008, 15:51
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
24-01-2008, 16:15
Right beansprouts uploader doesn't like java or txt files... So unfortunately you get them posted here!

BounceMain

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

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();
}
}