Foros del Web » Programación para mayores de 30 ;) » Java »

Crear toolbar genérico para todo mi proyecto

Estas en el tema de Crear toolbar genérico para todo mi proyecto en el foro de Java en Foros del Web. Hola, estoy trabajando en un proyecto nuevo y quiero organizar la estructura de esta forma: 1. Dejar un MDI, para que cuando presione en una ...
  #1 (permalink)  
Antiguo 25/01/2016, 16:44
Avatar de andres_15_  
Fecha de Ingreso: septiembre-2008
Ubicación: Cali
Mensajes: 232
Antigüedad: 15 años, 7 meses
Puntos: 7
Exclamación Crear toolbar genérico para todo mi proyecto

Hola, estoy trabajando en un proyecto nuevo y quiero organizar la estructura de esta forma:

1. Dejar un MDI, para que cuando presione en una opción del menú se abra dentro de la misma ventana y no me cree otra aparte.

2. Dejar una barra de herramientas estándar para todo el proyecto; No quiero crear la misma barra o dar copiar y pegar en cada forma nueva que cree.

3. Utilizar una interface que me obligue a implementar todos los botones que irían en el Toolbar.

Estas son las clases donde tengo el problema:

Código Java:
Ver original
  1. package prueba1.Principal;
  2.  
  3. import javax.swing.JButton;
  4. import javax.swing.JToolBar;
  5.  
  6.  
  7. public class principal_barra_menu extends javax.swing.JInternalFrame {
  8.  
  9.  
  10.     public principal_barra_menu() {
  11.         initComponents();
  12.     }
  13.  
  14.     protected JToolBar get_toolbar() {
  15.         return barPrincipal;
  16.     }
  17.  
  18.     protected JButton getBotonSalvar() {
  19.         return btnGuardar;
  20.     }
  21.  
  22.     protected JButton getBotonNuevo() {
  23.         return btnNuevo;
  24.     }
  25.  
  26.    
  27.     @SuppressWarnings("unchecked")
  28.     // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
  29.     private void initComponents() {
  30.  
  31.         barPrincipal = new javax.swing.JToolBar();
  32.         btnGuardar = new javax.swing.JButton();
  33.         btnNuevo = new javax.swing.JButton();
  34.  
  35.         barPrincipal.setRollover(true);
  36.  
  37.         btnGuardar.setText("Guardar");
  38.         btnGuardar.setFocusable(false);
  39.         btnGuardar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
  40.         btnGuardar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
  41.         btnGuardar.addActionListener(new java.awt.event.ActionListener() {
  42.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  43.                 btnGuardarActionPerformed(evt);
  44.             }
  45.         });
  46.         barPrincipal.add(btnGuardar);
  47.  
  48.         btnNuevo.setText("Nuevo");
  49.         btnNuevo.setFocusable(false);
  50.         btnNuevo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
  51.         btnNuevo.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
  52.         btnNuevo.addActionListener(new java.awt.event.ActionListener() {
  53.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  54.                 btnNuevoActionPerformed(evt);
  55.             }
  56.         });
  57.         barPrincipal.add(btnNuevo);
  58.  
  59.         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  60.         getContentPane().setLayout(layout);
  61.         layout.setHorizontalGroup(
  62.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  63.             .addComponent(barPrincipal, javax.swing.GroupLayout.DEFAULT_SIZE, 394, Short.MAX_VALUE)
  64.         );
  65.         layout.setVerticalGroup(
  66.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  67.             .addGroup(layout.createSequentialGroup()
  68.                 .addComponent(barPrincipal, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
  69.                 .addGap(0, 253, Short.MAX_VALUE))
  70.         );
  71.  
  72.         pack();
  73.     }// </editor-fold>                        
  74.  
  75.     private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {                                          
  76.  
  77.     }                                          
  78.  
  79.     private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) {                                        
  80.         // TODO add your handling code here:
  81.     }                                        
  82.  
  83.  
  84.     // Variables declaration - do not modify                    
  85.     private javax.swing.JToolBar barPrincipal;
  86.     private javax.swing.JButton btnGuardar;
  87.     private javax.swing.JButton btnNuevo;
  88.     // End of variables declaration                  
  89. }

Código Java:
Ver original
  1. package prueba1.Principal;
  2.  
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.beans.PropertyVetoException;
  6. import java.util.logging.Level;
  7. import java.util.logging.Logger;
  8.  
  9.  
  10. public class principal_crear_menu_principal extends principal_barra_menu implements principal_barra_herramientas_interface {
  11.  
  12.  
  13.     public principal_crear_menu_principal() {
  14.         initComponents();
  15.         this.barPrincipal.add(super.get_toolbar());
  16.        
  17.     }
  18.  
  19.  
  20.     @SuppressWarnings("unchecked")
  21.     // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
  22.     private void initComponents() {
  23.  
  24.         barPrincipal = new javax.swing.JToolBar();
  25.         panelPrincipal = new javax.swing.JPanel();
  26.         lblDescripcion = new javax.swing.JLabel();
  27.         txtDescripcion = new javax.swing.JTextField();
  28.  
  29.         setClosable(true);
  30.         setMaximizable(true);
  31.         setResizable(true);
  32.         setTitle("Crear menú");
  33.         setToolTipText("");
  34.         setAutoscrolls(true);
  35.         addInternalFrameListener(new javax.swing.event.InternalFrameListener() {
  36.             public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
  37.             }
  38.             public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) {
  39.             }
  40.             public void internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
  41.             }
  42.             public void internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {
  43.             }
  44.             public void internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) {
  45.             }
  46.             public void internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
  47.             }
  48.             public void internalFrameOpened(javax.swing.event.InternalFrameEvent evt) {
  49.                 formInternalFrameOpened(evt);
  50.             }
  51.         });
  52.  
  53.         barPrincipal.setFloatable(false);
  54.         barPrincipal.setRollover(true);
  55.  
  56.         lblDescripcion.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  57.         lblDescripcion.setText("Descripción:");
  58.         lblDescripcion.setToolTipText("");
  59.  
  60.         javax.swing.GroupLayout panelPrincipalLayout = new javax.swing.GroupLayout(panelPrincipal);
  61.         panelPrincipal.setLayout(panelPrincipalLayout);
  62.         panelPrincipalLayout.setHorizontalGroup(
  63.             panelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  64.             .addGroup(panelPrincipalLayout.createSequentialGroup()
  65.                 .addContainerGap()
  66.                 .addComponent(lblDescripcion, javax.swing.GroupLayout.DEFAULT_SIZE, 73, Short.MAX_VALUE)
  67.                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  68.                 .addComponent(txtDescripcion, javax.swing.GroupLayout.DEFAULT_SIZE, 124, Short.MAX_VALUE)
  69.                 .addGap(183, 183, 183))
  70.         );
  71.         panelPrincipalLayout.setVerticalGroup(
  72.             panelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  73.             .addGroup(panelPrincipalLayout.createSequentialGroup()
  74.                 .addContainerGap()
  75.                 .addGroup(panelPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  76.                     .addComponent(lblDescripcion)
  77.                     .addComponent(txtDescripcion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  78.                 .addContainerGap(217, Short.MAX_VALUE))
  79.         );
  80.  
  81.         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  82.         getContentPane().setLayout(layout);
  83.         layout.setHorizontalGroup(
  84.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  85.             .addComponent(barPrincipal, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  86.             .addComponent(panelPrincipal, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  87.         );
  88.         layout.setVerticalGroup(
  89.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  90.             .addGroup(layout.createSequentialGroup()
  91.                 .addComponent(barPrincipal, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
  92.                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  93.                 .addComponent(panelPrincipal, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  94.         );
  95.  
  96.         pack();
  97.     }// </editor-fold>                        
  98.  
  99.     private void formInternalFrameOpened(javax.swing.event.InternalFrameEvent evt) {                                        
  100.         try {
  101.             //Dejamos la ventana maximizada por defecto
  102.             this.setMaximum(true);
  103.         } catch (PropertyVetoException ex) {
  104.             Logger.getLogger(principal_crear_menu_principal.class.getName()).log(Level.SEVERE, null, ex);
  105.         }
  106.     }                                        
  107.  
  108.  
  109.            
  110.     private javax.swing.JToolBar barPrincipal;
  111.     private javax.swing.JLabel lblDescripcion;
  112.     private javax.swing.JPanel panelPrincipal;
  113.     private javax.swing.JTextField txtDescripcion;
  114.          
  115.  
  116.     @Override
  117.     public void fnGuardarCambios() {
  118.        
  119.     }
  120.  
  121. }

El problema es que todas las nuevas formas se extienden de la barra que estoy creando, pero como el evento ocurre en la forma padre (un click por ejemplo) este no se ve reflejada en la forma hija, y en la forma hija es donde necesito implementar los metodos de guardar, actualizar y borrar. ¿Alguna idea? Gracias.
  #2 (permalink)  
Antiguo 25/01/2016, 16:55
 
Fecha de Ingreso: junio-2011
Mensajes: 7
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Crear toolbar genérico para todo mi proyecto

Yo he estado haciendo algo similar. Te cuento un poco, a ver si me explico bien (que no es uno de mis fuertes), por si ello te pueda dar una idea:

- Tengo un frame que está siempre abierto.
- En ese frame hay dos elementos principales:
- Un menú, que es siempre el mismo
- Un panel, que es donde voy mostrando las cosas, según clicke en el menu
- El menu lo "dibujo" una vez, y queda así hasta que cierro el programa
- Cada vez que pincho en un elemento del menu, muestro una determinada clase JPanel. Es decir, asigno con algo similar: frame.add(panel_1, BorderLayout.CENTER);
- Para la comunicación entre el Frame (el padre), y los diferentes hijos (los panel) uso una interfaz, donde están los metedos "añadirPanel", "cerrarPanel", ect, implementados en el frame principal. Esto me permite que un panel pueda crear otro panel (para implementar una secuencia de paneles, por ejemplo, cuando vas introduciendo datos y pinchando en "siguiente").

En resumen, la idea es:
- Frame que está siempre abierto que contiene:
- Menu que se dibuja una sóla vez
- Panel que es el que va mostrando la información, el único que cambia.

No sé si me he explicado bien. Espero que te sea de ayuda.
  #3 (permalink)  
Antiguo 26/01/2016, 06:34
Avatar de andres_15_  
Fecha de Ingreso: septiembre-2008
Ubicación: Cali
Mensajes: 232
Antigüedad: 15 años, 7 meses
Puntos: 7
Respuesta: Crear toolbar genérico para todo mi proyecto

Gracias, me sirve de ejemplo y guía para hacer el mio. Intentaré a ver como me va. Si alguien tiene alguna sugerencia quedo agradecido.

Etiquetas: barra, clase, toolbar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:57.