Botones con imagenes, ¿porque no va?

KaSuGaK
07 de Abril del 2006
De los tres trocitos de codigo que hay aquí para crear un boton con una imagen dentro sólo funciona el 3o, pero a mi me interesa tenerlo como el 1o o sino algo como el 2o ( todo encapsulado en una clase sin main). ALguien me podria dar alguna explicacion? :S, gracias!!

//Primera version
public class VistaInicial extends JFrame
{
private JButton jbTest;

VistaInicial()
{
setSize(200,200);
setLayout(null);
jbTest = new JButton("boton",new ImageIcon("casos.gif"));
getContentPane().add( jbTest,BorderLayout.CENTER );
jbTest.setBounds(10,10,100,100);
}

public static void main(String args[])
{
new VistaInicial().setVisible(true);
}
}

/*codigo 2
aqui intento acercarme al ultimo ejemplo poniendo los
botones en un JPanel (clase Botoncitos) que luego agrego al JFrame.
*/
public class VistaInicial extends JFrame
{

VistaInicial()
{
Botoncitos panel = new Botoncitos();
getContentPane().add( panel,BorderLayout.CENTER );
setSize( 250,110 );
}

public static void main(String args[])
{
new VistaInicial().setVisible(true);
}
}

class Botoncitos extends JPanel
{
Botoncitos()
{
JButton boton = new JButton( "Boton", new ImageIcon("casos.gif"));
add( boton );
}
}
//codigo 3 (este es el unico que va, ejemplo del libro de Froufe)
public class VistaInicial extends JPanel {

public VistaInicial() {
ImageIcon izq = new ImageIcon( "casos.gif" );
JButton boton = new JButton( "Boton",new ImageIcon("casos.gif"));
add( boton );
}

public static void main( String args[] ) {
VistaInicial panel = new VistaInicial();
JFrame ventana = new JFrame();
ventana.setDefaultCloseOperation( ventana.EXIT_ON_CLOSE );
ventana.getContentPane().add( panel,BorderLayout.CENTER );
ventana.setSize( 250,110 );
ventana.setTitle( "Tutorial de Java, Swing" );
ventana.setVisible( true );
}
}

//Los imports:
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import java.awt.BorderLayout;

rober
07 de Abril del 2006
prueba aponer los iconos de esta forma.
la carpeta imagenes esta dentro dentro la carpetas donde tengas los .class
ImageIcon = new ImageIcon( getClass().getResource( images/miImagen.gif ) );