with tutorial guru99 gui example espaƱol elementos create java swing layout awt listener

tutorial - java swing guru99



Oyentes Java GUI sin AWT (5)

Estás malinterpretando la información que se te dio. Debe evitar usar componentes Swing con componentes AWT. Está bien usar Swing con la estructura de escucha AWT, administradores de diseño, etc. y de hecho es imposible no hacerlo.

Soy un desarrollador de Java que comienza, aprendiendo solo de tutoriales en Internet. Estoy aprendiendo aplicaciones de GUI a pantalla completa. Me dijeron ayer que no debería usar AWT en mis programas, porque está desactualizado. Ya sé sobre componentes ligeros y pesados, el principal problema son los oyentes de mouse y teclado. ¿Por qué AWT está desactualizado? Cómo hacer un programa sin AWT (agregar oyentes a JComponents, etc.) (¿qué tipo de elementos de Swing pueden reemplazar al AWT)?


Este es un pequeño ejemplo que puede demostrar, el uso del paquete javax.swing.Action también debería referirse a java doc para el paquete javax.swing.event creo que lo está encontrando. . .

import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JToolBar; class SysOutHelloAction extends AbstractAction { private static final Icon printIcon = new ImageIcon("Print.gif"); SysOutHelloAction() { super("Print", printIcon); putValue(Action.SHORT_DESCRIPTION, "Hello, World"); } public void actionPerformed(ActionEvent actionEvent) { System.out.println("Hello, World"); } } public class SwingActionTester { public static void main(String args[]) { JFrame frame = new JFrame("Action Sample"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final Action printAction = new SysOutHelloAction(); JMenuBar menuBar = new JMenuBar(); JMenu menu = new JMenu("File"); menuBar.add(menu); menu.add(new JMenuItem(printAction)); JToolBar toolbar = new JToolBar(); toolbar.add(new JButton(printAction)); JButton enableButton = new JButton("Enable"); ActionListener enableActionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { printAction.setEnabled(true); } }; enableButton.addActionListener(enableActionListener); JButton disableButton = new JButton("Disable"); ActionListener disableActionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { printAction.setEnabled(false); } }; disableButton.addActionListener(disableActionListener); JButton relabelButton = new JButton("Relabel"); ActionListener relabelActionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { printAction.putValue(Action.NAME, "Changed Action Value"); } }; relabelButton.addActionListener(relabelActionListener); JPanel buttonPanel = new JPanel(); buttonPanel.add(enableButton); buttonPanel.add(disableButton); buttonPanel.add(relabelButton); frame.setJMenuBar(menuBar); frame.add(toolbar, BorderLayout.SOUTH); frame.add(buttonPanel, BorderLayout.NORTH); frame.setSize(300, 200); frame.setVisible(true); } }


Hubo algunas buenas respuestas, pero me gustaría cubrir un aspecto ligeramente diferente. Cosas que Swing proporciona más allá de AWT.

Componentes

Swing es compatible con documentos con estilo en JEditorPane & JTextPane y, en cierta medida, con HTML en otros JComponents . AWT no admite documentos con estilo en ningún componente.

AWT no proporciona una estructura basada en árbol como JTree , ninguna estructura tabular como JTable , ninguna versión de JToolBar .

AWT no tiene equivalente (que puedo encontrar o recuperar) para JColorChooser y ninguno para la clase de utilidad simple - JOptionPane .

Oyentes

Como se menciona en un comentario, consulte los más de 20 oyentes adicionales / alternativos en el paquete javax.swing.event .

Look & Feel conectable

Los componentes Swing se pueden configurar para una apariencia y sensación particular en tiempo de ejecución, incluido un PLAF nativo.

Vea las capturas de pantalla en el Ejemplo de diseño anidado para ver más ejemplos.

Diseños

Además de la gran cantidad de diseños AWT, Swing ofrece:

  1. BoxLayout
  2. GroupLayout
  3. OverlayLayout
  4. ScrollPaneLayout
  5. SpringLayout
  6. ViewportLayout

Otro

Probablemente haya mucho más que omití en esa breve descripción, pero la conclusión es que Swing es un conjunto de herramientas GUI completamente más nuevo y más habilitado.

Swing se basa en clases de AWT y depende mucho de ellas.


Java''s Swing toma ActionListeners, que son parte del paquete AWT. Si desea usar swing, debe usar algún tipo de AWT ActionListener. Así son las cosas. No sugiero usar Java en absoluto para guis complejo, pero tampoco diría que AWT está desactualizado, ya que no hay reemplazo directo. Por lo tanto, solo adelante y use AWT.

Como alternativa, podrías mirar JOGL, pero eso es más si estás intentando crear algo orientado al juego.


Tienes razón. Tanto Java AWT como Java Spring están obsoletos. Use JavaFX en su lugar.
Y, como comentario, estoy frustrado con Java, que se suponía que era "escribir una vez en todas partes", cuando ahora resulta ser "debe seguir reescribiendo su aplicación cada tres meses" porque las nuevas versiones de Java rompen el código anterior, y los paquetes nuevos reemplazan a los viejos.