Autor
|
Tema: Meter un Frame dentro de otro Frame (Leído 18,620 veces)
|
kikian94
Desconectado
Mensajes: 66
|
Hola, tengo que crear una aplicacion que de informacion sobre el tiempo y necesito crear esto: y necesito esto: la organizacion del frame es borderlayout y habia pensado en poner en la parte izquierda otro layout divido en 2 pero no se como hacerlo
|
|
|
En línea
|
|
|
|
Usuario Invitado
Desconectado
Mensajes: 625
|
No es buena práctica que un JFrame sea hijo de otro JFrame. Usa JDialogs que para eso están, para mostrar ventanas de diálogo, para mostrar las opciones del software, mostrar información de algún evento, realizar una venta, etc. Así indicas que el JFrame (ventana principal) será padre de un diálogo: new JDialog(TU_INSTANCIA_DE_FRAME );
Al hacer esto, cuando abras un JDialog no podrás tocar el JFrame mientras no hayas cerrado el JDialog, que siempre es una buena práctica. Por ejemplo, si vas a mostrar información meterorológica de X ciudad, la muestras en un JDialog y ésta bloqueará el JFrame. Hasta que se cierre el JDialog no se podrá seguir revisando información meteorológicas de otras ciudades.
|
|
|
En línea
|
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
|
|
|
kikian94
Desconectado
Mensajes: 66
|
no puedo utilizar jframe por que estamos haciendo uso de la libreria awt y no se de que manera colocar el layout a la izquierda, y no tiene que abrirse ninguna ventana a no ser que pulse en añadir provincia o añadir poblacion, tiene que quedar como en la fotografia, se como poner cada cosa, pero a la hora de poner 2 textArea, uno para provincia y otro para poblacion no puedo ubicarlos a la zquierda debido a la disposicion del borderlayout por lo que por eso queria añadir otro layout a la izquierda y dentro de este meter 2 textArea
|
|
« Última modificación: 13 Marzo 2015, 17:14 pm por kikian94 »
|
En línea
|
|
|
|
Usuario Invitado
Desconectado
Mensajes: 625
|
AWT también tiene Frame y Dialog. El procedimiento es el mismo. El de la izquierda puede ser un GridLayout, especificas una columna y dos filas y el margen (distancia) vertical.
|
|
|
En línea
|
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
|
|
|
kikian94
Desconectado
Mensajes: 66
|
a vale, pensaba que jdialog era de swing, si, eso era lo que queria pero no se sintacticamente como poner el gridlayout dentro del borderlayout en la izquierda
|
|
|
En línea
|
|
|
|
Usuario Invitado
Desconectado
Mensajes: 625
|
Agrega un Panel en la parte izquierda, y a ese Panel le asignas el layout GridLayout. Lee la documentación de Oracle, tutoriales, para que veas ejemplos reales.
|
|
|
En línea
|
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
|
|
|
kikian94
Desconectado
Mensajes: 66
|
He probado con el panel, y si funciona pero tengo un problema no se alinear los elementos, he creado un box layout: izquierda.add(lProvincia); izquierda.add(tProvincias); izquierda.add(lPoblacion); izquierda.add(tPoblaciones);
|
|
« Última modificación: 14 Marzo 2015, 19:00 pm por kikian94 »
|
En línea
|
|
|
|
Usuario Invitado
Desconectado
Mensajes: 625
|
Cuando tengas una duda, primero consulta la documentación. Para eso está, para que los programadores la consulten ante cualquier duda. Aquí tienes la documentación de GridLayout: GridLayout. Como se puede observar tiene sobrecarga de constructores. El otro constructor acepta 4 parámetros, siendo los últimos el espaciado horizontal y el espaciado vertical. Juega con éstos valores a ver si consigues lo que deseas hacer.
|
|
|
En línea
|
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
|
|
|
kikian94
Desconectado
Mensajes: 66
|
estuve mirando ayer pero cambiando valores me seguia saliendo igual, y otra cosa, al pulsar el boton crear provincia me tiene que saltar una ventanita para que indique nombre de provincia y le de a crear o cancelar, pero no se el orden que debo de seguir, creo el action listener del boton crear provincia y luego para el boton del dialogo crear, el action listener lo tengo que crear dentro del primero o en una clase independiente?, muchas gracias
|
|
|
En línea
|
|
|
|
Usuario Invitado
Desconectado
Mensajes: 625
|
Yo siempre recomiendo aislar la lógica, el dominio de las vistas. Aplicar el patrón MVC para desacoplar tu aplicación te ahorrará muchos problemas. Por ejemplo, supongamos que tienes tu Frame o JFrame (Dile con todo respeto a tu profesor que no enseñe tecnologías obsoletas): MainWindow.javapackage com.company.app.views; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import com.company.app.controllers.MainWindowController; import com.company.app.model.entities.Population; public class MainWindow extends JFrame { private static final long serialVersionUID = -2973563217322489640L; private JButton btnUpdatePrediction ; private JList<String> provinceList; private JList<Population> populationList; private MainWindowController controller; public MainWindow() { super(); controller = new MainWindowController(this); initComponents(); } private void initComponents() { top.add(addMenuBar()); top.add(addToolbar()); this.setDefaultCloseOperation(EXIT_ON_CLOSE); JFrame. setDefaultLookAndFeelDecorated(true); this.setTitle("Sistema metereológico"); this.setSize(800,600); try { e.printStackTrace(); e.printStackTrace(); e.printStackTrace(); e.printStackTrace(); } } menubar. setBackground(new Color(50, 50, 50)); menuFile. setForeground(Color. WHITE); iOpen.addActionListener(controller); iExit.addActionListener(controller); menuFile.add(iOpen); menuFile.add(iExit); menuProvince. setForeground(Color. WHITE); iNewProvince = new JMenuItem("Nueva provincia"); iNewProvince.addActionListener(controller); iUpdateProvince = new JMenuItem("Actualizar provincia"); iUpdateProvince.addActionListener(controller); menuProvince.add(iNewProvince); menuProvince.add(iUpdateProvince); menuPopulation. setForeground(Color. WHITE); iNewPopulation = new JMenuItem("Nueva población"); iNewPopulation.addActionListener(controller); iUpdatePopulation = new JMenuItem("Actualizar población"); iUpdatePopulation.addActionListener(controller); menuPopulation.add(iNewPopulation); menuPopulation.add(iUpdatePopulation); menuAbout. setForeground(Color. WHITE); iAbout.addActionListener(controller); menuAbout.add(iAbout); menubar.add(menuFile); menubar.add(menuProvince); menubar.add(menuPopulation); menubar.add(menuAbout); return menubar; } toolbar. setBackground(new Color(0, 184, 255)); toolbar.setSize(50,100); btnUpdatePrediction = new JButton("Actualizar predicción"); btnUpdatePrediction.setFocusable(false); btnUpdatePrediction.addActionListener(controller); btnNewProvince = new JButton("Nueva provincia"); btnNewProvince.setFocusable(false); btnNewProvince.addActionListener(controller); btnNewPopulation = new JButton("Nueva población"); btnNewPopulation.setFocusable(false); btnNewPopulation.addActionListener(controller); toolbar.add(btnUpdatePrediction); toolbar.add(btnNewProvince); toolbar.add(btnNewPopulation); return toolbar; } private JPanel addProvincesPanel () { provinceList = new JList<>(); populationList = new JList<>(); constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 1; constraints.gridheight = 1; panel. add(new JLabel("Provincias"), constraints ); constraints.gridx = 0; constraints.gridy = 1; constraints.gridwidth = 2; constraints.gridheight = 1; constraints.weighty = 1.0; constraints.gridx = 0; constraints.gridy = 2; constraints.gridwidth = 1; constraints.gridheight = 1; panel. add(new JLabel("Poblaciones"), constraints ); constraints.gridx = 0; constraints.gridy = 3; constraints.gridwidth = 2; constraints.gridheight = 1; constraints.weighty = 1.0; panel. add(new JScrollPane(populationList ), constraints ); return panel; } private JPanel addPredictionsPanel () { textArea.setEditable(false); return panel; } private JPanel addFooterPanel () { panel. setBackground(new Color(80, 80, 80)); lblFooter = new JLabel("Sistema metereológico"); lblFooter. setForeground(new Color(200, 200, 200)); panel.add(lblFooter); return panel; } }
MainWindowController.javapackage com.company.app.controllers; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import com.company.app.views.MainWindow; import com.company.app.views.NewProvinceDialog; private MainWindow gui; public MainWindowController(MainWindow gui) { this.gui = gui; } @Override if(e.getActionCommand().equals("Nueva provincia")) { NewProvinceDialog dialog = new NewProvinceDialog(gui); dialog.setVisible(true); } } }
NewProvinceDialog.javapackage com.company.app.views; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class NewProvinceDialog extends JDialog { private static final long serialVersionUID = -3369879094143739366L; public NewProvinceDialog (JFrame parent ) { super(parent); initComponents(parent); } private void initComponents (JFrame parent ) { btnAddProvince = new JButton("Agregar"); constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weighty = 1.0; panel.add(label, constraints); constraints.gridx = 1; constraints.gridy = 0; constraints.gridwidth = 3; constraints.gridheight = 1; constraints.weightx = 1.0; panel.add(txtProvince, constraints); constraints.gridx = 3; constraints.gridy = 1; constraints.gridwidth = 1; constraints.gridheight = 1; panel.add(btnAddProvince, constraints); this.add(panel); this.setTitle("Agregar nueva provincia"); this.setSize(280,100); this.setModal(true); this.setLocationRelativeTo(parent); this.setResizable(false); } }
Imágenes: Sólo es cosa de jugar con los layouts y delegar responsabilidades correctamente. Cualquier duda, comentas.
|
|
|
En línea
|
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
pregunta sobre como ver los datos de un frame a otro en Netbeans
Java
|
XpandyX
|
0
|
3,197
|
8 Marzo 2011, 17:56 pm
por XpandyX
|
|
|
Cerrar Frame al Abrir otro
Java
|
monsefoster
|
0
|
3,609
|
8 Abril 2011, 19:33 pm
por monsefoster
|
|
|
[Solucionado] como meter un form dentro de otro en c#
.NET (C#, VB.NET, ASP)
|
chelita
|
2
|
14,010
|
3 Junio 2011, 16:43 pm
por chelita
|
|
|
Facebook dentro de un frame.
Desarrollo Web
|
A2Corp
|
4
|
4,063
|
20 Abril 2012, 18:24 pm
por A2Corp
|
|
|
Como pasar un Frame o un Picturebox completo de un form a otro.
Programación Visual Basic
|
79137913
|
0
|
2,515
|
12 Junio 2012, 20:08 pm
por 79137913
|
|