Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Noxware en 2 Septiembre 2014, 01:57 am



Título: [AYUDA][Problema] Cargar imagenes en Java (soy nuevo en Java)
Publicado por: Noxware en 2 Septiembre 2014, 01:57 am
hola, hace poco comenze un proyecto en la laptop de un amigo con el proposito de aprender y probar....

en la laptop de mi amigo use Eclipse para programar....

por alguna razon si le daba a ejecutar no me cargaba las imagenes q tenia yo en un JFrame....

pero si lo exportaba como un .JAR si me mostraba las imagenes

........

me traje el proyecto a mi casa y cuando lo abria no importa como lo ejecutara (ya sea con F11 o pasandolo a un JAR) no me muestra ninguna imagen.....

el codigo es el siguiente:

Código
  1. import javax.swing.*;
  2.  
  3. import java.awt.*;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6.  
  7.  
  8. public class MyClass {
  9.  
  10. static int max_altura = 6;
  11. static int max_ancho = 386;
  12.  
  13. static int min_altura = 504;
  14. static int min_ancho = 386;
  15.  
  16. static float con_down = 0f;
  17.  
  18. float con_accel = 9.8f;
  19. float up = 500f;
  20. float masita = 1000f;
  21.  
  22.  
  23. public static void main(String args[]){
  24. JFrame frame = new JFrame("KuroNeko Fall Simulator 1.0");
  25. frame.setLayout(null);
  26. frame.setSize(800, 565);
  27. frame.setResizable(false);
  28. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  29.  
  30. JLabel label1 = new JLabel("Altura (m)");
  31. label1.setBounds(10, 20, 110, 20);
  32. final JTextField altura = new JTextField("500");
  33. altura.setBounds(120, 20, 200, 20);
  34.  
  35. JLabel label2 = new JLabel("Masa (g)");
  36. label2.setBounds(10, 50, 110, 20);
  37. final JTextField masa = new JTextField("1000");
  38. masa.setBounds(120, 50, 200, 20);
  39.  
  40. JLabel label3 = new JLabel("Aceleracion (m/s²)");
  41. label3.setBounds(10, 80, 110, 20);
  42. JTextField accel = new JTextField("9.8");
  43. accel.setBounds(120, 80, 200, 20);
  44.  
  45. JLabel scale = new JLabel();
  46. scale.setBounds(400, 20, 50, 500);
  47. scale.setIcon(new ImageIcon("scale.png"));
  48.  
  49. JLabel ball = new JLabel();
  50. ball.setBounds(max_ancho, max_altura, 30, 30);
  51. ball.setIcon(new ImageIcon("ball.png"));
  52.  
  53. JButton start = new JButton("Iniciar");
  54. start.setBounds(10, 140, 310, 20);
  55. start.addActionListener(new ActionListener() {
  56.  
  57. @Override
  58. public void actionPerformed(ActionEvent arg0) {
  59. // TODO Auto-generated method stub
  60.  
  61. }
  62. });
  63.  
  64. JButton set_val = new JButton("Establecer estos valores");
  65. set_val.setBounds(10, 110, 310, 20);
  66. set_val.addActionListener(new ActionListener() {
  67.  
  68. @Override
  69. public void actionPerformed(ActionEvent arg0) {
  70.  
  71.  
  72. }
  73. });
  74.  
  75.  
  76. JLabel uper = new JLabel("500.0 m");
  77. uper.setBounds(max_ancho+50, max_altura-10, 50, 50);
  78. JLabel mid = new JLabel("250.0 m");
  79. mid.setBounds(max_ancho+50, 245, 50, 50);
  80. JLabel down = new JLabel(Float.toString(con_down) + " m");
  81. down.setBounds(min_ancho+50, min_altura-10, 50, 50);
  82.  
  83.  
  84. frame.add(uper);
  85. frame.add(mid);
  86. frame.add(down);
  87. frame.add(altura);
  88. frame.add(masa);
  89. frame.add(accel);
  90. frame.add(start);
  91. frame.add(set_val);
  92. frame.add(scale);
  93. frame.add(ball);
  94.  
  95. frame.add(label1);
  96. frame.add(label2);
  97. frame.add(label3);
  98. frame.setVisible(true);
  99. }
  100.  
  101.  
  102.  
  103. }
  104.  
  105.  

y al usar eclipse la estructura es mas o menos...

src
....defaul package
.............. myclas.java

y dentro de src estan las imagenes..... porque en el pc de mi amigo funcionaba (pasandolo a JAR) y a mi no me muestra nada????


Título: Re: [AYUDA][Problema] Cargar imagenes en Java (soy nuevo en Java)
Publicado por: GCODE en 13 Septiembre 2014, 02:53 am
Si las imagenes las tienes directamente en la carpeta src el codigo seria asi:

Utilizando el jlabel ball como ejemplo:

ball.setIcon(new ImageIcon(getClass().getResource("ball.png")));

Saludos


Título: Re: [AYUDA][Problema] Cargar imagenes en Java (soy nuevo en Java)
Publicado por: Chuidiang en 13 Septiembre 2014, 17:00 pm
Hola:

Si pones el fichero de imagen así

new ImageIcon("scale.png")

la imagen tiene que estar en el directorio donde se está ejecutando el programa.

En eclipse, si no has tocado nada al respecto, el directorio donde se ejecuta el programa es el raíz del proyecto eclipse, as ahí donde deberías colocar las imagenes.

Si lo haces con un jar, lo habitual es el que el directorio de ejecución del programa sea el directorio donde está el jar, así que tendrías que poner los ficheros de imagen al lado del jar.

Si en tu main pones

System.out.println(System.getProperty("user.dir"));

te dirá cual es el directorio de ejecución, que es donde tendrían que estar tus ficheros de imagen tal cual los estás  cargando.

Se bueno.


Título: Re: [AYUDA][Problema] Cargar imagenes en Java (soy nuevo en Java)
Publicado por: Noxware en 14 Septiembre 2014, 19:39 pm
Gracias Chuidiang, lo que me dijiste me hizo probar un monton de cosas y al fin me di cuenta de q la razon por la que en la PC de mi amigo me mostraba imagenes y en la mia no es porque en la PC de mi amgo sus imagenes estaban fuera del JAR y no dentro. Muchas gracias.