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.