Ver Mensaje Individual
  #7 (permalink)  
Antiguo 13/08/2008, 04:16
AnDrEa MM
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Respuesta: Canvas tapa un menú desplegable

Gracias por la ayuda HackmanC!
Aunque no he conseguido resolver el problema :(

Adjunto el código para poder indicar qué hago:

- Clase JFrame: creo un JFrame en el q añado un menú, un Canvas (lienzo) y un TextArea (info).

Código:
public class JFrame extends javax.swing.JFrame {
	static protected JMenuBar jmb;
	static protected JMenu jm;
        static protected JMenuItem nuevo;
        private Lienzo lienzo;
        private Info info;

public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                JFrame jf = new JFrame();
                jf.setSize(1280, 770);
                jf.setVisible(true);
            }
        });
    }
    
    public JFrame() {
    	crearMenu();
        initComponents();
    }
    
    public void crearMenu() {	
        jmb = new JMenuBar(); // BARRA DE MENUS        
        jm = new JMenu("  Archivo  ");
        nuevo = new JMenuItem("  Nuevo  "); 
        jm.add(nuevo);
    }

    private void initComponents() {
    	getContentPane().setLayout(new java.awt.GridBagLayout());
        lienzo  = new Lienzo();
        getContentPane().add(lienzo, new java.awt.GridBagConstraints());
        info = new Info();
        getContentPane().add(info, new java.awt.GridBagConstraints());
        setJMenuBar(jmb);
        pack();
    }
}
- La clase Lienzo, q es un Canvas, tiene el siguiente aspecto:

Código:
public class Lienzo extends java.awt.Canvas {

    public Lienzo() {
    	setBounds(10, 10, 920, 599);
    	setBackground(Color.BLACK);
    }
}
- Y la clase Info (un TextArea) el siguiente:

Código:
public class Info extends Panel {	

	public Info() {
		setBounds(10, 610, 920, 113);
		TextArea ta = new TextArea();		
		this.add(ta);
    }
}
Al ejecutar el programa, me salen los 3 componentes en el JFrame (no en la disposición q deseo, pero eso se soluciona con los atributos del Layout), pero el problema es q al desplegar el menú, éste aparece detrás del Canvas (lienzo).

Según comentaste anteriormente, un buen uso del Layout no debe mostrar ese problema, así q deduzco q estoy haciendo algo mal, pero no sé qué puede ser.