Uso o JMenu e um Canvas3D em um JFrame com BorderLayout, mas quando quero exibir as opções do menu, elas ficam atrás do Canvas3D.
Abaixo segue o codigo que foi compilado com java1.3 e java3d1.3
existe uma linha, que ta até comentada, que quando removida da pra ver os menus, mas caso contrario não da pra ver. Testem o código, por favor, e verifiquem se alguem acha a solução.
import java.awt.;
import java.awt.event.;
import javax.swing.;
import javax.media.j3d.;
import javax.vecmath.;
import com.sun.j3d.utils.universe.;
import com.sun.j3d.utils.geometry.*;
public class Lab extends JFrame {
private SimpleUniverse u;
private BranchGroup b;
private Canvas3D c;
private JMenuBar jMenuBar1;
private JMenu jMenuArq;
private JMenuItem jMenuArqNovo;
private JMenuItem jMenuArqAbrir;
private JMenuItem jMenuArqSalvar;
private JSeparator jSeparator2;
private JMenuItem jMenuArqSair;
private JMenu jMenuProp;
private JMenuItem jMenuPropPc[];
private JMenu jMenuAjuda;
private JMenuItem jMenuAjudaAjuda;
private JSeparator jSeparator1;
private JMenuItem jMenuAjudaSobre;
private JPanel jPanel;
private static final Color3f FUNDO = new Color3f(0.05f, 0.09f, 0.2f);
private BranchGroup criarCena(SimpleUniverse u) {
BranchGroup b = new BranchGroup();
Transform3D roty = new Transform3D();
roty.rotY(Math.PI/3);
TransformGroup tg = new TransformGroup(roty);
tg.addChild(new ColorCube(0.2f));
b.addChild(tg);
b.compile();
return b;
}
public Lab() {
this.getContentPane().setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
c = new Canvas3D(config);
u = new SimpleUniverse©;
b = criarCena(u);
u.getViewingPlatform().setNominalViewingTransform();
u.addBranchGraph(b);
//************************************** adcionar menu ***************************************
jMenuBar1 = new JMenuBar();
jMenuArq = new JMenu(“Arquivo”);
jMenuArqNovo = new JMenuItem(“Novo”);
jMenuArq.add(jMenuArqNovo);
jMenuArqAbrir = new JMenuItem(“Abrir”);
jMenuArq.add(jMenuArqAbrir);
jMenuArqSalvar = new JMenuItem(“Salvar”);
jMenuArq.add(jMenuArqSalvar);
jSeparator1 = new JSeparator();
jMenuArq.add(jSeparator1);
jMenuArqSair = new JMenuItem(“Sair”);
jMenuArq.add(jMenuArqSair);
jMenuAjuda = new JMenu(“Ajuda”);
jMenuAjudaAjuda = new JMenuItem(“Ajuda do LVR”);
jMenuAjuda.add(jMenuAjudaAjuda);
jSeparator2 = new JSeparator();
jMenuAjuda.add(jSeparator2);
jMenuAjudaSobre = new JMenuItem(“Sobre do LVR”);
jMenuAjuda.add(jMenuAjudaSobre);
jMenuProp = new JMenu(“Propriedades”);
jMenuPropPc = new JMenuItem[15];
for (int i=0; i< jMenuPropPc.length; i++){
jMenuPropPc[i] = new JMenuItem(“PC”+(i+1));
jMenuPropPc[i].setActionCommand(“PC”+(i+1));
jMenuProp.add(jMenuPropPc[i]);
}
jMenuBar1.add(jMenuArq);
jMenuBar1.add(jMenuProp);
jMenuBar1.add(jMenuAjuda);
setJMenuBar(jMenuBar1);
this.getContentPane().add(“Center”, c); //Comentando esta linha os menus funcionam corretamente
this.setSize(800,600);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setVisible(true);
} //fim construtor
//********************************************************************************************
public static void main(String argv[]) {
Lab app = new Lab();
app.addWindowListener(new WindowAdapter() {
public void windowclosing(WindowEvent e) {
System.exit(0);
}
});
}
}