Foros del Web » Programación para mayores de 30 ;) » Java »

metodo paint dentro de un JPanel (SWING)

Estas en el tema de metodo paint dentro de un JPanel (SWING) en el foro de Java en Foros del Web. Hola tengo un problema al diseñar una aplicacioncon con una interfaz grafica con SWING (y usando visual eclipse). La jerarquia que define esta interfaz se ...
  #1 (permalink)  
Antiguo 19/11/2007, 11:09
 
Fecha de Ingreso: mayo-2007
Mensajes: 9
Antigüedad: 17 años
Puntos: 0
metodo paint dentro de un JPanel (SWING)

Hola tengo un problema al diseñar una aplicacioncon con una interfaz grafica con SWING (y usando visual eclipse). La jerarquia que define esta interfaz se resume en un jframe que contiene un jpane con un label y un jpanel en el que a su vez se define un evento asociado a un click de raton.

Mi problema esta en que quiero que en la parte de la interfaz que corresponde al jpanel (un area de mi interfaz) se pinte un dibujo (para ello quiero usar el metodo PAINT de la clase graphics). El problema es que no se donde meter el metodo paint en mi codigo para que lo que quiero dibujar se dibuje solo en el jpanel y no en otra parte del jframe contenedor.. No se si me explico. Saco una foto de lo que estoy haciendo:

http://img232.imageshack.us/my.php?image=ejemplogt0.png

El jPanel seria la zona de blanco. Ahi quiero que al pinchar el metodo paint dibuje algunos objetos.

Mi problema es... donde insertar el metodo paint dentro de toda esta jerarquia para que solo se dibujen los objetos en ese area??

A continuacion planto un esqueleto del codigo asociado por si aclara la situación:
Muchisimas gracias por la ayuda!

public class Dijk extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private Label label = null;
private JPanel jPanel = null;
private Label label1 = null;
private JLabel jLabel1 = null;

public Dijk() {
super();
//inicializo elementos del interfaz
initialize();
}

private void initialize() {
this.setSize(1045, 491);
this.setPreferredSize(new Dimension(1045, 441));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
this.setContentPane(getJContentPane());
this.setTitle("Algoritmo de Dijkstra");
}

private JPanel getJContentPane() {

if (jContentPane == null) {
label = new Label();
label.setBounds(new Rectangle(5, 5, 1027, 35));
label.setBackground(new Color(0, 112, 191));
label.setForeground(Color.white);
label.setFont(new Font("Verdana", Font.PLAIN, 14));
label.setAlignment(Label.CENTER);
label.setText("TUTORIAL INTERACTIVO - Algoritmo de Dijkstra");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(label, null);
jContentPane.add(getJPanel(), null);
}
return jContentPane;
}

private JPanel getJPanel() {

if (jPanel == null) {

try {
jLabel1 = new JLabel();
jLabel1.setBounds(new Rectangle(221, 9, 492, 36)); // Generated
jLabel1.setText("JLabel"); // Generated
label1 = new Label();
label1.setText("Zona de Dibujo del Grafo");
label1.setFont(new Font("Verdana", Font.BOLD, 12));
label1.setBounds(new Rectangle(12, 12, 159, 23));
jPanel = new JPanel();
jPanel.setLayout(null);
jPanel.setBounds(new Rectangle(5, 43, 774, 340));
jPanel.setBackground(Color.white);
jPanel.setActionMap(new ActionMap());
jPanel.setBorder(BorderFactory.createBevelBorder(B evelBorder.LOWERED));
jPanel.add(label1, null);
jPanel.add(jLabel1, null); // Generated

jPanel.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(java.awt.event.MouseEvent e) {

CODIGO QUE MANEJA EL EVENTO
}
}
}
}

catch (java.lang.Throwable e) {
}

}
return jPanel;

}

}
  #2 (permalink)  
Antiguo 20/11/2007, 03:40
 
Fecha de Ingreso: septiembre-2007
Mensajes: 173
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: metodo paint dentro de un JPanel (SWING)

Utiliza layouts para situar el panel en el que quieras pintar, luego simplemente utilizas el método para pintar en el panel que has elegido, y lo que pintes, o el icono o lo que sea, aparecerá en ese panel, en esa zona.

O sea, si pones el panel al sur con BorderLayout.SOUTH, lo que dibujes aparecerá debajo del todo.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:31.