Insertar imagen

i12vecaj
24 de Septiembre del 2005
Hola. Tengo el siguiente código y me gustaría saber como puedo insertar una imagen, ya que lo he intentado con el JBuilder pero no he conseguido como realizarlo.

import javax.swing.*;
import java.awt.SystemColor;
import java.awt.Color;
import java.awt.event.*;
import javax.swing.border.*;
import java.awt.Dimension;
import java.awt.Rectangle;
public class principal extends JPanel {
TitledBorder titledBorder1;
TitledBorder titledBorder2;
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
JButton jButton4 = new JButton();
JLabel jLabel2 = new JLabel();
JTextField jTextField1 = new JTextField();
JLabel jLabel1 = new JLabel();
public principal() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
JFrame principal1 = new JFrame();
principal1.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
});

principal1.getContentPane().add(new principal());
principal1.pack();
principal1.setSize(600,500);
principal1.setResizable(false);
principal1.setVisible(true);


}
private void jbInit() throws Exception {
titledBorder1 = new TitledBorder("");
titledBorder2 = new TitledBorder("");
jButton4.setFont(new java.awt.Font("Dialog", 1, 9));
jButton4.setAlignmentX((float) 122.0);
jButton4.setAlignmentY((float) 122.0);
jButton4.setText("Ayuda");
jButton4.setVerticalAlignment(SwingConstants.TOP);
jButton4.setVerticalTextPosition(SwingConstants.TOP);
jButton3.setFont(new java.awt.Font("Dialog", 1, 11));
jButton3.setAlignmentX((float) 0.0);
jButton3.setText("A cerca de ...");
jButton2.setFont(new java.awt.Font("Dialog", 1, 11));
jButton2.setAlignmentX((float) 1.0);
jButton2.setAlignmentY((float) 0.6);
jButton2.setText("Añadir");
jButton1.setFont(new java.awt.Font("Dialog", 1, 11));
jButton1.setAlignmentY((float) 0.5);
jButton1.setText("Buscar");
this.setBackground(Color.white);
this.setMaximumSize(new Dimension(32767, 32767));
jLabel2.setText("Archivos almacenados");
jTextField1.setEditable(false);
jTextField1.setText("0");
jLabel1.setFont(new java.awt.Font("Dialog", 3, 20));
jLabel1.setForeground(UIManager.getColor("textHighlight"));
jLabel1.setAlignmentY((float) 0.0);
jLabel1.setDebugGraphicsOptions(DebugGraphics.FLASH_OPTION);
jLabel1.setText("Buscador R.A.J.O.A.");
this.add(jLabel1, null);
this.add(jButton1, null);
this.add(jLabel2, null);
this.add(jTextField1, null);
this.add(jButton3, null);
this.add(jButton2, null);
this.add(jButton4, null);
this.setBackground(Color.white);
}



}

A ver si alguien me puede decir cómo insertar una imagen.
Muchas gracias y un saludo a todos.

didiguerrero
24 de Septiembre del 2005
para insertar una imagen en swing puedes hacer esto

por ejemplo con un boton
jBtnBoton.setIcon(new ImageIcon(this.getClass().getResource("/Imagenes/foto.png")));

o con un label
jLblLabel.setIcon(new ImageIcon(this.getClass().getResource("/foto.png")));

estos asumen que tienes las imagenes en un directorio cerca a tu clase

o puedes hacer

jLblLabel.setIcon(new ImageIcon("c:/foto.png");


Tuzka
24 de Septiembre del 2005
No se que trates de hacer pero te recomiendo algo asi, para evitarte utilizar extends:

import java.awt.*;
import java.io.*;
import javax.swing.*;
import java.awt.event.*;

class Principal2 extends WindowAdapter implements ActionListener{

private JFrame frame;
private JMenuBar barra;
private JMenu menu;
private JMenuItem item1;
private JPanel p1 = new JPanel();
private JPanel p2 = new JPanel();
private JPanel p3 = new JPanel();
private JPanel p4 = new JPanel();
private Toolkit tk = Toolkit.getDefaultToolkit();
private Canvas cv;
private Image img1;
private String name;
byte[] img2;

public void Inicial(){
JFrame.setDefaultLookAndFeelDecorated(true);
frame = new JFrame("Programa de filtrado de imagenes");
barra = new JMenuBar();
menu = new JMenu("Opciones");

item1 = new JMenuItem("Obtener Imagen");
item1.setActionCommand("obtenfoto");
item1.addActionListener(this);

menu.add(item1);
barra.add(menu);
frame.setJMenuBar(barra);

frame.setSize(800, 600);
frame.setJMenuBar(barra);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
}

public void actionPerformed(ActionEvent e) {
if("obtenfoto".compareTo(e.getActionCommand())==0){
name = JOptionPane.showInputDialog("Ingresa el nombre de la foto");
if(new File(name).exists()){
try{
img1 = tk.getImage(name);
cv = new Canvas(){
public void paint(Graphics g){
g.drawImage(img1, 10, 10, this);
}
};
cv.setSize(400,400);
p1.add(cv);
frame.getContentPane().add(p1,BorderLayout.EAST);
}
catch(Exception gh){
JOptionPane.showMessageDialog( null, "Error al cargar el archivo: ", null,JOptionPane.ERROR_MESSAGE );
}
}//fin de if exist
}
}

public static void main(String[] luis){
Principal2 prin = new Principal2();
prin.Inicial();
}

}

Aureliano
24 de Septiembre del 2005
Te recomiendo que utilices un Canvas para cargar la imagen y que despues insertes ese canvas en tu ventana:
public class Prueba extends JFrame {
java.awt.Toolkit tk;
Image im;
public Prueba2(){
super();
this.setSize(400,400);
tk = this.getToolkit();
im = tk.getImage("mi_imagen.jpg");
Canvas cv = new Canvas(){
public void paint(Graphics g){
g.drawImage(im, 0, 0, this);
}
};
cv.setSize(200,200);
getContentPane().add(cv);
}

public static void main(String[] args){
new Prueba2().show();
}
}