Problema com Accelerator

0 respostas
CrOnNoS
Estou tendo um problema quando removo um label onde os accelerators dos menus param de funcionar até que o menu seja clicado de novo. Fiz essa classe como exemplo:
public class Nada extends JFrame {

	private static JPanel panel = new JPanel();
	private static JFrame frame = new JFrame("Teste");

	public static void main(String[] args) {

		JMenuBar menuBar = new JMenuBar();
		JMenu menu = new JMenu("Menu");
		JMenuItem menuItem = new JMenuItem("Selecione");
		JMenuItem removerPainel = new JMenuItem("Remove o Painel");

		JTextArea textArea = new JTextArea(10, 10);
		textArea.setLineWrap(true);
		panel.add(textArea);

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(300, 300);

		menuItem.setAccelerator(KeyStroke.getKeyStroke("F1"));

		menuBar.add(menu);
		menu.add(menuItem);
		menu.add(removerPainel);
		frame.add(menuBar, BorderLayout.NORTH);
		frame.add(panel, BorderLayout.CENTER);

		frame.setVisible(true);

		menuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JOptionPane.showMessageDialog(null, "Olá !");
			} // actionPerformed
		}); // inner class

		removerPainel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				frame.remove(panel);
				panel = null;
				frame.repaint();
			} // actionPerformed
		}); // inner class

	} // main

} // class
Ela forma um menu com 2 JMenuItem, sendo que o primeiro quando acionado faz aparecer uma JOptionPanel e o segundo faz com que o label com o JTextArea seja removido. Mas logo após remover o componente, eu não consigo acessar o menuitem de abir o JOptionPanel através do Accelerator (configurado com F1 no exemplo). Ele só volta a funcionar se eu clicar novamente no JMenuBar.

Alguém sabe me dizer o porque ? E/ou como resolver isso ?

Criado 23 de agosto de 2009
Respostas 0
Participantes 1