Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/02/2008, 20:34
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 17 años
Puntos: 260
Sonrisa Re: Ayuda, Menú Dinámico

Prototipo en Eclipse...
(Casi todo puede ser mejorado, no lo optimicé.)
Es solo un ejemplo ... no ?

Código:
package org.example;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.WindowConstants;

public class Example extends javax.swing.JFrame {
	private static final long serialVersionUID = 4436990274867781357L;

	public Example() {
		this.setPreferredSize(new Dimension(260, 260));
		this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

		JMenu jMenu = new JMenu();
		jMenu.setText("Opciones");

		JMenuBar jJMenuBar = new JMenuBar();
		jJMenuBar.add(jMenu);

		String[] Options[] = {
				{ "Menu 1", "Opcion 1" },
				{ "Menu 2", "Opcion 2" },
				{ "Menu 3", "Opcion 3" }
			};
		addMenuItems(jMenu, Options);

		this.setJMenuBar(jJMenuBar);
		this.pack();
	}

	public static void main(String[] args) {
		new Example().setVisible(true);
	}

	private void addMenuItems(JMenu menu, String[] args[]) {
		for (int i = 0; i < args.length; i++) {
			MyJMenuItem m = new MyJMenuItem(args[i][0], args[i][1]);
			menu.add(m);
			m.addActionListener(m);
		}
	}

	private class MyJMenuItem extends javax.swing.JMenuItem implements ActionListener {
		private static final long serialVersionUID = -1909273293784759710L;

		private String message;

		public MyJMenuItem(String text, String message) {
			super(text);
			this.message = message;
		}

		public String getMessage() {
			return this.message;
		}

		public void setMessage(String message) {
			this.message = message;
		}

		public void actionPerformed(ActionEvent e) {
			if (e.getSource() instanceof MyJMenuItem) {
				String message = ((MyJMenuItem)e.getSource()).getMessage();
				javax.swing.JOptionPane.showMessageDialog(null, message);
			}
		}
	}
}