Qual a melhor maneira de se montar um menu?, estou tentando desse jeito mas não está aparecendo, o que está errado?
Leia: How to Use Menus
Exemplo:
[code]
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JSeparator;
public class Test {
private void go() {
JFrame frame = new JFrame("Teste JMenuBar");
JMenuBar menuBar = new JMenuBar();
JMenu menuArquivo = new JMenu("Arquivo");
JMenuItem menuNovo = new JMenuItem("Novo");
JMenuItem menuSair = new JMenuItem("Sair");
menuSair.addActionListener(new MenuHandler());
menuArquivo.add(menuNovo);
menuArquivo.add(new JSeparator());
menuArquivo.add(menuSair);
menuBar.add(menuArquivo);
JMenu menuAjuda = new JMenu("Ajuda");
JMenuItem menuSobre = new JMenuItem("Sobre");
menuAjuda.add(menuSobre);
menuBar.add(menuAjuda);
frame.setJMenuBar(menuBar);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private class MenuHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
public static void main(String[] args) {
new Test().go();
}
}[/code]
Consegui montar o menu, mas esta sendo colocado ao lado do meu label, como ajustar para ficar na parte superior da janela?
private JPanel getPainelPrincipal() {
if (painelPrincipal == null) {
painelPrincipal = new JPanel();
painelPrincipal.setLayout(new GridBagLayout());
painelPrincipal.setBorder(new EmptyBorder(new Insets(5,5,5,5)));
getContentPane().add(BorderLayout.NORTH,painelPrincipal);
GridBagConstraints c = new GridBagConstraints();
Dimension shortField = new Dimension(40,20);
Dimension mediumField = new Dimension(120,20);
Dimension longField = new Dimension(240,20);
Dimension hugField = new Dimension(240,30);
EmptyBorder border = new EmptyBorder(new Insets(0,0,0,10));
EmptyBorder border1 = new EmptyBorder(new Insets(0,20,0,10));
c.insets = new Insets(2,2,2,2);
c.anchor = GridBagConstraints.WEST;
JMenuBar menuBar = new JMenuBar();
JMenu menuArquivo = new JMenu("Arquivo");
JMenuItem menuNovo = new JMenuItem("Novo");
JMenuItem menuSair = new JMenuItem("Sair");
menuSair.addActionListener(new MenuHandler());
menuArquivo.add(menuNovo);
menuArquivo.add(new JSeparator());
menuArquivo.add(menuSair);
menuBar.add(menuArquivo);
JMenu menuAjuda = new JMenu("Ajuda");
JMenuItem menuSobre = new JMenuItem("Sobre");
menuAjuda.add(menuSobre);
menuBar.add(menuAjuda);
painelPrincipal.add(menuBar);
final JLabel lblCliente = new JLabel("Cliente:");
lblCliente.setBorder(border);
painelPrincipal.add(lblCliente,c);
final JLabel lblNome = new JLabel("");
lblNome.setBorder(border);
c.gridx = 1;
painelPrincipal.add(lblNome,c);
JLabel lblNumero = new JLabel("Número:");
lblNumero.setBorder(border);
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 1;
c.gridheight = 1;
painelPrincipal.add(lblNumero,c);
c.fill = GridBagConstraints.NONE;
final JTextField txtNumero = new JTextField();
txtNumero.setPreferredSize(shortField);
c.gridx = 1;
c.fill = GridBagConstraints.HORIZONTAL;
painelPrincipal.add(txtNumero,c);
txtNumero.addKeyListener(
new KeyListener(){
public void keyTyped(KeyEvent e) {
txtNumero.setText(Principal.maxLength(txtNumero.getText(),7));
}
public void keyPressed(KeyEvent e) {
txtNumero.setText(Principal.maxLength(txtNumero.getText(),7));
}
public void keyReleased(KeyEvent e) {
txtNumero.setText(Principal.maxLength(txtNumero.getText(),7));
}
}
);
JLabel lblStatus = new JLabel("Status:");
//alterando a cor do label
lblStatus.setForeground(Color.RED);
lblStatus.setBorder(border);
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 1;
c.gridheight = 1;
painelPrincipal.add(lblStatus,c);
c.fill = GridBagConstraints.NONE;
final JLabel lblvalorStatus = new JLabel("");
//alterando a cor do label
lblvalorStatus.setForeground(Color.RED);
lblvalorStatus.setBorder(border);
c.gridx = 1;
c.gridy = 2;
c.gridwidth = 1;
c.gridheight = 1;
painelPrincipal.add(lblvalorStatus,c);
c.fill = GridBagConstraints.NONE;
JButton btnDiscar = new JButton("Discar");
btnDiscar.setSize(shortField);
c.gridx = 0;
c.gridy = 11;
c.fill = GridBagConstraints.HORIZONTAL;
painelPrincipal.add(btnDiscar,c);
btnDiscar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
lblvalorStatus.setText("Discando!");
}
});
JButton btnDesligar = new JButton("Desligar");
btnDesligar.setSize(shortField);
c.gridx = 1;
c.gridy = 11;
c.fill = GridBagConstraints.HORIZONTAL;
painelPrincipal.add(btnDesligar,c);
btnDesligar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
lblvalorStatus.setText("Desligando!");
}
});
JButton btnObter = new JButton("Obter");
btnObter.setSize(shortField);
c.gridx = 2;
c.gridy = 11;
c.fill = GridBagConstraints.HORIZONTAL;
painelPrincipal.add(btnObter,c);
btnObter.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
ManipulaXML xml = new ManipulaXML();
Validacao valida = new Validacao();
try {
lblvalorStatus.setText("Obtendo Cliente!");
txtNumero.setText(valida.formaTelefone(xml.getXml("Telefone",1)));
lblNome.setText(xml.getXml("Nome",1));
lblvalorStatus.setText("Cliente Obtido!");
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
}
return painelPrincipal;
}
É possível criar um metodo somente para essa montagem de menu? e como eu chamaria dentro do meu Painel?
Funcionou cara, muito obrigado.
this.setJMenuBar(menuBar);