swing
Usando Swing para interfaces gráficas de usuario
Buscar..
Observaciones
Saliendo de la aplicación en ventana cerrar
Es fácil olvidarse de salir de la aplicación cuando se cierra la ventana. Recuerda añadir la siguiente línea.
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
Creando una ventana vacía (JFrame)
Creando el JFrame
Crear una ventana es fácil. Solo tienes que crear un JFrame
.
JFrame frame = new JFrame();
Titulando la ventana
Es posible que desee dar un título a su ventana. Puede hacerlo pasando una cadena al crear el JFrame
o llamando a frame.setTitle(String title)
.
JFrame frame = new JFrame("Super Awesome Window Title!");
//OR
frame.setTitle("Super Awesome Window Title!");
Configuración del tamaño de la ventana
La ventana será lo más pequeña posible cuando se haya creado. Para hacerlo más grande, puedes establecer su tamaño explícitamente:
frame.setSize(512, 256);
O puede tener el tamaño del marco en función del tamaño de su contenido con el método pack()
.
frame.pack();
Los setSize()
y pack()
se excluyen mutuamente, así que usa uno u otro.
Qué hacer en la ventana Cerrar
Tenga en cuenta que la aplicación no se cerrará cuando la ventana se haya cerrado. Puede salir de la aplicación después de que la ventana se haya cerrado diciéndole al JFrame
que haga eso.
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Alternativamente, puedes decirle a la ventana que haga otra cosa cuando está cerrada.
WindowConstants.DISPOSE_ON_CLOSE //Get rid of the window
WindowConstants.EXIT_ON_CLOSE //Quit the application
WindowConstants.DO_NOTHING_ON_CLOSE //Don't even close the window
WindowConstants.HIDE_ON_CLOSE //Hides the window - This is the default action
Creación de un panel de contenido
Un paso opcional es crear un panel de contenido para su ventana. Esto no es necesario, pero si desea hacerlo, cree un JPanel
y llame a frame.setContentPane(Component component)
.
JPanel pane = new JPanel();
frame.setContentPane(pane);
Mostrando la ventana
Después de crearlo, querrá crear sus componentes y luego mostrar la ventana. Mostrando la ventana se hace como tal.
frame.setVisible(true);
Ejemplo
Para aquellos de ustedes que les gusta copiar y pegar, aquí hay un código de ejemplo.
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane
frame.setVisible(true); //Show the window
Añadiendo Componentes
Un componente es una especie de elemento de interfaz de usuario, como un botón o un campo de texto.
Creando un componente
Crear componentes es casi idéntico a crear una ventana. Sin embargo, en lugar de crear un JFrame
, crea ese componente. Por ejemplo, para crear un JButton
, haga lo siguiente.
JButton button = new JButton();
Muchos componentes pueden tener parámetros pasados cuando se crean. Por ejemplo, a un botón se le puede dar un texto para mostrar.
JButton button = new JButton("Super Amazing Button!");
Si no desea crear un botón, puede encontrar una lista de componentes comunes en otro ejemplo en esta página.
Los parámetros que se pueden pasar a ellos varían de un componente a otro. Una buena manera de verificar lo que pueden aceptar es mirar los parámetros dentro de su IDE (si usa uno). Los accesos directos predeterminados se enumeran a continuación.
- IntelliJ IDEA - Windows / Linux:
CTRL + P
- IDEA IntelliJ - OS X / macOS:
CMD + P
- Eclipse:
CTRL + SHIFT + Space
- NetBeans:
CTRL + P
Mostrando el componente
Después de crear un componente, normalmente establecerá sus parámetros. Después de eso, debe ponerlo en algún lugar, como en su JFrame
, o en su panel de contenido si creó uno.
frame.add(button); //Add to your JFrame
//OR
pane.add(button); //Add to your content pane
//OR
myComponent.add(button); //Add to whatever
Ejemplo
Este es un ejemplo de cómo crear una ventana, configurar un panel de contenido y agregarle un botón.
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create the content pane
frame.setContentPane(pane); //Set the content pane
JButton button = new JButton("Super Amazing Button!"); //Create the button
pane.add(button); //Add the button to the content pane
frame.setVisible(true); //Show the window
Configuración de parámetros para componentes
Los componentes tienen varios parámetros que se pueden configurar para ellos. Varían de un componente a otro, por lo que una buena manera de ver qué parámetros se pueden configurar para los componentes es comenzar a escribir componentName.set
y dejar que su IDE complete el autocompletado (si usa un IDE) sugiera métodos. El acceso directo predeterminado en muchos IDE, si no se muestra automáticamente, es CTRL + Space
.
Parámetros comunes que son compartidos entre todos los componentes.
Descripción | Método |
---|---|
Establece el tamaño más pequeño que puede tener el componente (solo si el administrador de diseño respeta la propiedad de tamaño mínimo) | setMinimumSize(Dimension minimumSize) |
Establece el tamaño más grande que puede tener el componente (solo si el administrador de diseño respeta la propiedad maximumSize) | setMaximumSize(Dimension maximumSize) |
Establece el tamaño preferido del componente (solo si el administrador de diseño respeta la propiedad preferredSize) | setPreferredSize(Dimension preferredSize) |
Muestra u oculta el componente. | setVisible(boolean aFlag) |
Establece si el componente debe responder a la entrada del usuario. | setEnabled(boolean enabled) |
Establece la fuente del texto. | setFont(Font font) |
Establece el texto de la información sobre herramientas. | setToolTipText(String text) |
Establece el color de fondo del componente. | setBackground(Color bg) |
Establece el color de fondo (color de fuente) del componente | setForeground(Color bg) |
Parámetros comunes en otros componentes.
Componentes comunes | Descripción | Método |
---|---|---|
JLabel , JButton , JCheckBox , JRadioButton , JToggleButton , JMenu , JMenuItem , JTextArea , JTextField | Establece el texto mostrado. | setText(String text) |
JProgressBar , JScrollBar , JSlider , JSpinner | Set es un valor numérico entre los valores mínimo y máximo del componente | setValue(int n) |
JProgressBar , JScrollBar , JSlider , JSpinner | Establecer es el valor más pequeño posible que la propiedad de value puede ser | setMinimum(int n) |
JProgressBar , JScrollBar , JSlider , JSpinner | Conjunto es el mayor valor posible que la propiedad de value puede ser | setMaxmimum(int n) |
JCheckBox , JToggleBox | Establece si el valor es verdadero o falso (por ejemplo: ¿se debe marcar una casilla de verificación?) | setSelected(boolean b) |
Componentes comunes
Descripción | Clase |
---|---|
Botón | JButton |
Caja | JCheckBox |
Menú desplegable / cuadro combinado | JComboBox |
Etiqueta | JLabel |
Lista | JList |
Barra de menús | JMenuBar |
Menú en una barra de menú | JMenu |
Artículo en un menú | JMenuItem |
Panel | JPanel |
Barra de progreso | JProgressBar |
Boton de radio | JRadioButton |
Barra de desplazamiento | JScrollBar |
Deslizador | JSlider |
Spinner / selector de número | JSpinner |
Mesa | JTable |
Árbol | JTree |
Área de texto / campo de texto multilínea | JTextArea |
Campo de texto | JTextField |
Barra de herramientas | JToolBar |
Haciendo Interfaces de Usuario Interactivas
Tener un botón allí está muy bien, pero ¿cuál es el punto si hacer clic en él no hace nada? ActionListener
se usan para decirle a su botón, u otro componente que haga algo cuando está activado.
Agregar ActionListener
s se hace como tal.
buttonA.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//Code goes here...
System.out.println("You clicked the button!");
}
});
O, si estás utilizando Java 8 o superior ...
buttonA.addActionListener(e -> {
//Code
System.out.println("You clicked the button!");
});
Ejemplo (Java 8 y superior)
JFrame frame = new JFrame("Super Awesome Window Title!"); //Create the JFrame and give it a title
frame.setSize(512, 256); //512 x 256px size
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //Quit the application when the JFrame is closed
JPanel pane = new JPanel(); //Create a pane to house all content
frame.setContentPane(pane);
JButton button = new JButton("Click me - I know you want to.");
button.addActionListener(e -> {
//Code goes here
System.out.println("You clicked me! Ouch.");
});
pane.add(buttonA);
frame.setVisible(true); //Show the window
Organizar el diseño de componentes
Agregar componentes uno tras otro da como resultado una interfaz de usuario que es difícil de usar, porque todos los componentes están en alguna parte . Los componentes se ordenan de arriba a abajo, cada componente en una "fila" separada.
Para remediar esto y brindarle a los desarrolladores la posibilidad de diseñar componentes fácilmente, Swing tiene LayoutManager
s.
Estos LayoutManagers se tratan más ampliamente en Introducción a los administradores de diseño, así como los temas separados del Administrador de diseño: