vorrei che facendo partire il programma prima mi aprisse una pagina poi spingendo "clicca sull'immagine" andasse a far partire il giochino..ma nn ci salto fuori qualcuno puo darmi una mano??

codice 1Pagina:
/** File Introduzione.java.
*Contiene la classe Introduzione.
*/

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.Image;
import java.awt.Graphics;
/**Apre un frame di introduzione al programma.
*/
public class Pagina extends JFrame implements ActionListener{
private JFrame f;
//Crea la finestra e vi inserisce la copertina del programma
public Pagina (){

this.f=f;
Toolkit tk= Toolkit.getDefaultToolkit();

try{
Dimension d=new Dimension();
d=tk.getScreenSize();

}
catch(Throwable e){}

setTitle("Snake");
setDefaultCloseOperation(f.DO_NOTHING_ON_CLOSE );
Container c= getContentPane();

Image intro=tk.getImage("Snake.jpg");
JButton b=new JButton(new ImageIcon (intro));
c.add(b);
b.setActionCommand("inizia");
b.addActionListener(this);
setBounds(150,100,700,600);
c.setLayout(new FlowLayout());
JLabel la=new JLabel("Clicca sull'immagine per iniziare ");
c.add(la);
JButton b2=new JButton(" Informazioni ");
b2.addActionListener (this);
c.add(b2);
JButton b3=new JButton(" Esci ");
c.add(b3);
b3.addActionListener(this);
show();
}
/**Genera l'evento detrminato dalla pressione di un bottone.
*Ci sono tre opzioni: vedere le informazioni, uscire direttamente, aprire il programma.
*/
public void actionPerformed(ActionEvent e){

String scelta=e.getActionCommand();
if(scelta.equals("inizia")){
dispose();
f.show();
}
if(scelta.equals(" Esci ")){
System.exit(0);
}
if(scelta.equals(" Informazioni ")){
new Informazioni();
}
}
}

poi c'è la pagina del gioco:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.Color.*;
import java.io.*;
import javax.imageio.*;
import java.util.*;
import java.awt.geom.*;
public class SnakePit{
SnakeFrame m = new SnakeFrame();
//m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//m.show();
}
class SnakeFrame extends JPanel
{
public SnakeFrame()
{
setTitle("Snake");
setSize(299,177);
SnakePanel punt2 = new SnakePanel();
Container punt = getContentPane();
punt.add(punt2);
}
}
class SnakePanel extends JPanel
{
public SnakePanel()
{
last = new Point2D.Double(100,100);
lines = new ArrayList();
cibo = new ArrayList();
percorso = new int[291][143];
x1=100;
y1=100;
x2=100;
y2=100;
risp=0;
for(r=0;r<289;r++)
{
for(colonne=0;colonne<141;colonne++)
{
percorso[r][colonne]=0;
}
}
if(c==1)
lines.clear();
KeyHandler listener = new KeyHandler();
addKeyListener(listener);
setFocusable(true);
Timer t = new Timer(20);
TimerAction listener2 = new TimerAction();
t.addTimerListener(listener2);
}
public void add(int dx, int dy)
{
if(dx != x || dy != y)
{
if(dx != -x || dy != -y)
{
x=dx;
y=dy;
Point2D end = new Point2D.Double(last.getX() + dx,last.getY() + dy);
Line2D line = new Line2D.Double(last,end);
lines.add(line);
if(dx == -1)
percorso[x1][y1]=-2;
if(dx == 1)
percorso[x1][y1]=2;
if(dy == -1)
percorso[x1][y1]=-1;
if(dy == 1)
percorso[x1][y1]=1;
lines.remove(0);
repaint();
x1=(int)(end.getX());
y1=(int)(end.getY());
last=end;
if(dx == -1)
percorso[x1][y1]=-2;
if(dx == 1)
percorso[x1][y1]=2;
if(dy == -1)
percorso[x1][y1]=-1;
if(dy == 1)
percorso[x1][y1]=1;
}
}
}
public void incr(int z)
{
incremento = z;
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
Rectangle2D limite = new Rectangle2D.Double(0,0,290,141);
g2.draw(limite);
Rectangle2D limite2 = new Rectangle2D.Double(1,1,288,139);
g2.draw(limite2);
//Rectangle2D limite3 = new Rectangle2D.Double(2,2,286,137);
//g2.draw(limite3);
for(int i=0;i<lines.size();i++)
g2.draw((Line2D)lines.get(i));
for(i=0;i<cibo.size();i++)
{
g2.draw((Rectangle2D)cibo.get(i));
}
}
private Point2D last,last2;
private ArrayList lines,cibo;
private static int incremento = 1;
private class KeyHandler implements KeyListener
{
public void keyPressed(KeyEvent event)
{
SnakeFrame punt = new SnakeFrame();
int keyCode = event.getKeyCode();
int d;
d= incremento;
if(keyCode == KeyEvent.VK_LEFT) add(-d,0);
else if(keyCode == KeyEvent.VK_RIGHT) add(d,0);
else if(keyCode == KeyEvent.VK_UP) add(0,-d);
else if(keyCode == KeyEvent.VK_DOWN) add(0,d);
}
public void keyReleased(KeyEvent event) {}
public void keyTyped(KeyEvent event)
{
}
}
private class TimerAction implements TimeListener
{
public void timeElapsed(TimerEvent event)
{
if (getWidth()==0)
{
return;
}
if(percorso[x1+x][y1+y] == 0)
{
if((last.getX()) < 290 && (last.getY()) < 149 && (last.getX()) > 1 && (last.getY()) > 1)
{
Point2D end = new Point2D.Double(last.getX() + x,last.getY() + y);
Line2D line = new Line2D.Double(last,end);
lines.add(line);
x1=(int)(end.getX());
y1=(int)(end.getY());
if(lines.size()> nemiciCont)
{
//System.out.println("lalla" + percorso[x2][y2]);
if(percorso[x2][y2] == -2)
{
percorso[x2][y2]=0;
x2=x2-1;
}
if(percorso[x2][y2] == 2)
{
percorso[x2][y2]=0;
x2=x2+1;
}
if(percorso[x2][y2] == -1)
{
percorso[x2][y2]=0;
y2=y2-1;
}
if(percorso[x2][y2] == 1)
{
percorso[x2][y2]=0;
y2=y2+1;
}
//System.out.println(percorso[x2][y2]);
lines.remove(0);
}
repaint();
if(x == -1)
percorso[x1][y1]=-2;
if(x == 1)
percorso[x1][y1]=2;
if(y == -1)
percorso[x1][y1]=-1;
if(y == 1)
percorso[x1][y1]=1;
last=end;
}
if((last.getY() + y) >= 141)
{
lines.clear();
nemiciCont=10;
last = new Point2D.Double(100,100);
crash=1;
}
if((last.getX() + x) >= 289)
{
lines.clear();
nemiciCont=10;
last = new Point2D.Double(100,100);
crash=1;
}
if((last.getX() + x) <= 0)
{
lines.clear();
nemiciCont=10;
last = new Point2D.Double(100,100);
crash=1;
}
if((last.getY() + y) <= 0)
{
lines.clear();
nemiciCont=10;
last = new Point2D.Double(100,100);
crash=1;
}
}
else if(percorso[x1+x][y1+y]!=0)
{
lines.clear();
nemiciCont=10;
last = new Point2D.Double(100,100);
x1=100;
y1=100;
x2=100;
y2=100;
crash=1;
}
if(crash==1)
{
crash=0;
x=0;
y=0;
for(r=0;r<289;r++)
{
for(colonne=0;colonne<141;colonne++)
{
percorso[r][colonne]=0;
}
}
}
if(b==0)
{
do
{
w = generator.nextInt(284);
z = generator.nextInt(136);
if(percorso[w][z]==0 && percorso[w+1][z+1]==0 && percorso[w+2][z+2]==0 && percorso[w+3][z+3]==0 && percorso[w+4][z+4]==0 && percorso[w+5][z+5]==0)
risp=1;
}
while(risp != 1);
risp=0;
Rectangle2D rect = new Rectangle2D.Double(w,z,5,5);
cibo.add(rect);
repaint();
b=1;
}
if((last.getX() + x) >= w && (last.getX() + x) <= w+5 && (last.getY() + y) >= z && (last.getY() + y) <= z+5)
{
cibo.remove(0);
b=0;
nemiciCont= nemiciCont +50;
}
}
}
private Random generator = new Random();
private int x,y,w,z;
private int c,i,nemiciCont=10,b=0,crash=0,r,colonne;
private int[][] percorso;
private int x1,y1,x2,y2,risp;
Graphics2D g2,g3;
}
class TimerEvent extends AWTEvent
{
public TimerEvent(Timer t){ super(t,TIMER_EVENT);}
public static final int TIMER_EVENT
= AWTEvent.RESERVED_ID_MAX+5555;
}
interface TimeListener extends EventListener
{
public void timeElapsed(TimerEvent event);
}
class Timer extends JComponent implements Runnable
{
public Timer(int i)
{
listenerList = new EventListenerList();
interval = i;
Thread t = new Thread(this);
t.start();
}
public void addTimerListener(TimeListener listener)
{
listenerList.add(TimeListener.class,listener);
}
public void removeTimerListener(TimeListener listener)
{
listenerList.remove(TimeListener.class,listener);
}
public void run()
{
while(true)
{
try{ Thread.sleep(interval);}
catch(InterruptedException e){}
TimerEvent event = new TimerEvent(this);
EventQueue queue
= Toolkit.getDefaultToolkit().getSystemEventQueue();
queue.postEvent(event);
}
}
public void processEvent(AWTEvent event)
{
if(event instanceof TimerEvent)
{
EventListener[] listeners = listenerList.getListeners(TimeListener.class);
for(int a=0;a<listeners.length;a++)
((TimeListener)listeners[a]).timeElapsed((TimerEvent)event);
}
else
super.processEvent(event);
}
private int interval;
private EventListenerList listeners;
}
se avete voglia di guardare anche il gioco perchè penso che anche lui abbia qualche errore...
grazie mille!!
a dimenticavo che il main è dichiarato in un ulteriore altra pagina...