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;
}
}