Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/03/2011, 14:05
Avatar de sivadmp
sivadmp
 
Fecha de Ingreso: febrero-2011
Ubicación: La Paz - Bolivia
Mensajes: 293
Antigüedad: 13 años, 2 meses
Puntos: 20
Respuesta: Menus llamando clases

hola

una observacion que te hago, las clases en Java siempre se declaran con la primera letra en Mayuscula, esto por la estandarizacion de la codificacion en Java.

la funcion Unidad1ActionPerformed esta mal, por que vas a crear un frame nuevo cada ves que ocurra el evento, es decir si haces click 10 veces en el menu "graficar seno", te van a aparecer 10 ventanas "frames", y eso esta muy mal

lo que tienes que hacer es crear una sola ves, tu panel de grafica y actualizarlo de acuerdo al menu que se haya presionado

primeramente instanciamos el panel de la grafica y lo adicionamos al centro de nuestro Frame

Código java:
Ver original
  1. private GraphingData graphics=null;
  2.    
  3.     public Tarea() {
  4.         graphics = new GraphingData();
  5.         this.setLayout(new BorderLayout());
  6.         initComponents();
  7.        
  8.         this.add(graphics,"Center");
  9.         this.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  10.     }

en la clase GraphingData, van a exisitir dos metodos para graficar, uno va a ser drawSeno y drawCoseno

tenemos que tener dos atributos por ejemplo, un atributo de tipo booleano seno y otro coseno, y una funcion setSeno que nos va a permitir actualizar el valor del atributo seno.

Código java:
Ver original
  1. private boolean seno;
  2.     private boolean coseno;
  3.    
  4.     public void setSeno(boolean seno){
  5.         this.seno=seno;
  6.         this.repaint();
  7.     }
  8.    
  9.     public void setCoseno(boolean coseno){
  10.         this.coseno=coseno;
  11.         this.repaint();
  12.     }

tienes que notar, que en las funciones setters estamos actualizando la grafica mediante repaint()

dentro de la funcion paintComponent, vamos a llamar las dos funciones que hemos creado para realizar la grafica, siempre y cuando si el atributo coseno, se encuentra en verdadero vamos a poder graficar la funcion del coseno y asi sucesivamente

Código java:
Ver original
  1. protected void paintComponent(Graphics g) {
  2.         super.paintComponent(g);
  3.         Graphics2D g2 = (Graphics2D) g;
  4.        
  5.         if(seno)
  6.             drawSeno(g2);
  7.         if(coseno)
  8.             drawCoseno(g2);
  9.     }

y desde el menu "graficar seno" llamamos a la funcion setSeno

Código java:
Ver original
  1. GraficarSeno.addActionListener(new ActionListener() {
  2.             @Override
  3.             public void actionPerformed(ActionEvent arg0) {
  4.                 graphics.setSeno(true);
  5.                 graphics.setCoseno(false);
  6.             }
  7.         });

tus nuevas clases arregladas serian

Código java:
Ver original
  1. public class GraphingData extends JPanel {
  2.     int x0, xN, y0, yN;
  3.     double xmin, xmax, ymin, ymax;
  4.     int h, w;
  5.  
  6.     private boolean seno;
  7.     private boolean coseno;
  8.    
  9.     public void setSeno(boolean seno){
  10.         this.seno=seno;
  11.         this.repaint();
  12.     }
  13.    
  14.     public void setCoseno(boolean coseno){
  15.         this.coseno=coseno;
  16.         this.repaint();
  17.     }
  18.    
  19.     protected void paintComponent(Graphics g) {
  20.         super.paintComponent(g);
  21.         Graphics2D g2 = (Graphics2D) g;
  22.        
  23.         if(seno)
  24.             drawSeno(g2);
  25.         if(coseno)
  26.             drawCoseno(g2);
  27.     }
  28.  
  29.     private void drawSeno(Graphics2D g2d){
  30.         g2d.drawRect(10, 10, 120, 120);
  31.         g2d.drawString("Seno", 50, 50);
  32.     }
  33.    
  34.     private void drawCoseno(Graphics2D g2d){
  35.         g2d.drawOval(10, 10, 120, 120);
  36.         g2d.drawString("Coseno", 50, 50);
  37.     }
  38. }// fin de la clase

y

Código java:
Ver original
  1. public class Tarea extends JFrame {
  2.  
  3.     private GraphingData graphics=null;
  4.    
  5.     public Tarea() {
  6.         graphics = new GraphingData();
  7.         this.setLayout(new BorderLayout());
  8.         initComponents();
  9.         this.add(graphics,"Center");
  10.         this.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  11.     }
  12.    
  13.     private void initComponents() {
  14.  
  15.         jPopupMenu1 = new javax.swing.JPopupMenu();
  16.         jMenuBar1 = new javax.swing.JMenuBar();
  17.         Unidad1 = new javax.swing.JMenu();
  18.         Suma = new javax.swing.JMenuItem();
  19.         Coseno = new javax.swing.JMenuItem();
  20.         Funcion = new javax.swing.JMenuItem();
  21.         GraficarSeno = new javax.swing.JMenuItem();
  22.  
  23.         Unidad1.setText("Unidad1");
  24.         Unidad1.addActionListener(new java.awt.event.ActionListener() {
  25.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  26.             }
  27.         });
  28.  
  29.         Suma.setText("Suma Producto");
  30.         Unidad1.add(Suma);
  31.  
  32.         Coseno.setText("Graficar Coseno");
  33.         GraficarSeno.setText("Graficar Seno");
  34.         Unidad1.add(GraficarSeno);
  35.        
  36.         Coseno.addActionListener(new ActionListener() {
  37.             @Override
  38.             public void actionPerformed(ActionEvent arg0) {
  39.                 graphics.setSeno(false);
  40.                 graphics.setCoseno(true);
  41.             }
  42.         });
  43.        
  44.         GraficarSeno.addActionListener(new ActionListener() {
  45.             @Override
  46.             public void actionPerformed(ActionEvent arg0) {
  47.                 graphics.setSeno(true);
  48.                 graphics.setCoseno(false);
  49.             }
  50.         });
  51.        
  52.         Unidad1.add(Coseno);
  53.  
  54.         Funcion.setText("Funcion");
  55.         Funcion.addKeyListener(new java.awt.event.KeyAdapter() {
  56.             public void keyPressed(java.awt.event.KeyEvent evt) {
  57.            
  58.             }
  59.         });
  60.         Unidad1.add(Funcion);
  61.         jMenuBar1.add(Unidad1);
  62.         setJMenuBar(jMenuBar1);
  63.     }
  64.     public static void main(String args[]) {
  65.         Tarea tarea=new Tarea();
  66.         tarea.setSize(500,500);
  67.         tarea.setVisible(true);
  68.     }
  69.     // Variables declaration - do not modify//GEN-BEGIN:variables
  70.     private javax.swing.JMenuItem Coseno;
  71.     private javax.swing.JMenuItem Funcion;
  72.     private javax.swing.JMenuItem GraficarSeno;
  73.     private javax.swing.JMenuItem Suma;
  74.     private javax.swing.JMenu Unidad1;
  75.     private javax.swing.JMenuBar jMenuBar1;
  76.     private javax.swing.JPopupMenu jPopupMenu1;
  77.     // End of variables declaration//GEN-END:variables
  78. }

agradecer no cuesta nada

saludos