Consejos útiles

GUI de Java

Pin
Send
Share
Send
Send


En este punto, la cuadrícula no hará nada especial, pero si quieres experimentar un poco, puedes agregar oyentes de ActionListener y un poco de lógica para hacer un juego 2D simple como tic-tac-toe o uno más complejo como Sea Battle.

Tenga en cuenta: en este artículo, Eclipse se usa para todos los ejemplos, por lo que puede haber algunas diferencias dependiendo de lo que use>, pero es casi inútil para tales gráficos> principalmente debido al uso del método de arrastrar y soltar (arrastrar y soltar objetos) en este entorno.

  1. 1 Crear un proyecto Java. Es bastante simple Inicie su entorno de desarrollo y cree un nuevo proyecto. Llámalo como quieras. En nuestro ejemplo, este será un buttongrid.
    • El nombre no importa, ya que es simplemente el nombre del archivo.

2 Cree una clase Java con el método principal. Cree una nueva clase y asígnele el nombre que desee. En nuestro ejemplo, este será un buttongrid. Los usuarios de Eclipse simplemente hacen clic en el campo etiquetado como "public static void main (string [] args)", es decir no necesitará escribirlo usted mismo.

    Este nombre es más importante. que la anterior, ya que debe constar de una palabra, de lo contrario no se puede usar.

  • 3 Importar las bibliotecas. De esta manera, tendrá acceso a toda la información que necesita para escribir su código. Debe importar javax.swing.JFrame, javax.swing.JButton y java.awt.Gr> Crear un constructor. El constructor crea una instancia de la clase buttongr> Crear la ventana principal (marco):
    1. El marco debe tener un nombre. Para que pueda ser referenciado fuera del constructor ButtonGr>
    2. Dentro del constructor, debemos asegurarnos de que todos los botones estén ubicados en la cuadrícula. Para hacer esto, necesitamos establecer la ubicación en el marco escribiendo lo siguiente: frame.setLayout (new GridLayout (x, y)),

    No es absolutamente necesario, pero para que la ventana principal se cierre al hacer clic en el botón "x" en su esquina superior derecha, necesitamos agregar la línea: frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE),

    Para establecer el marco en el tamaño correcto, y para que contenga todo lo que necesitamos, debemos ejecutar el comando de empaquetado: frame.pack (),

    Lo último que se debe hacer con un marco es hacerlo visible: frame.setVisible (verdadero),

    6 Cree una cuadrícula con botones:

      Necesitamos crear botones con los que el usuario interactúe, pero como no sabemos cuántos botones necesitamos, solo tenemos que declararlos primero. Por lo tanto, inmediatamente después de la línea de creación del marco, declare los botones: cuadrícula JButton [] []. Dos pares de corchetes significan que las instancias de JButton en la cuadrícula estarán contenidas en formato bidimensional. Si hubiera un par de paréntesis, esto significaría una línea simple de botones JButton, que también funciona. Pero es mucho más fácil referirse al botón creado o interactuar con el botón si se declaran como una matriz bidimensional.

    1. Anunciamos los botones JButton, pero no indicamos cuántos de ellos. En el constructor, debe agregar una línea de código que establezca este número: gr>
    2. Ahora se determina que habrá un cierto número de botones, y cada uno de ellos necesita ser creado. La forma más fácil de hacer esto es usar un bucle doble, uno a lo largo del eje xy otro a lo largo del eje y. Dentro de este doble bucle, creamos un nuevo botón, y para simplificar el enlace posterior en nuestro ejemplo, colocaremos texto dentro de cada botón para saber dónde se encuentra cada uno de los botones de la matriz bidimensional. Para crear un botón dentro del bucle, necesitamos escribir gr),

      Hacker # 183. Malware para Android

      AWT fue el primer intento de Sun de crear una interfaz gráfica para Java. Fueron por el camino fácil y simplemente crearon una capa en Java que llama a métodos de bibliotecas escritas en C. Los métodos de biblioteca crean y usan componentes gráficos del entorno operativo. Por un lado, esto es bueno, ya que un programa Java es similar a otros programas dentro de este sistema operativo. Pero, por otro lado, no hay garantía de que las diferencias en los tamaños y las fuentes de los componentes no estropeen la apariencia del programa cuando se ejecuta en otra plataforma. Además, para proporcionar multiplataforma, era necesario unificar las interfaces de llamada de componentes, debido a lo cual su funcionalidad resultó estar un poco truncada. Y el conjunto de componentes resultó ser bastante pequeño. Por ejemplo, AWT no tiene tablas y los botones no admiten la visualización de iconos.

      Recursos utilizados AWT intenta liberar automáticamente. Esto complica un poco la arquitectura y afecta el rendimiento. Dominar AWT es bastante simple, pero escribir algo complicado será un poco difícil. Ahora se usa a excepción de los applets.

      Ventajas:

      • parte del JDK,
      • velocidad de trabajo
      • Los componentes gráficos son similares a los estándar.

      Desventajas

      • El uso de componentes nativos impone restricciones en el uso de sus propiedades. Algunos componentes pueden no funcionar en absoluto en plataformas no nativas,
      • algunas funciones, como iconos e información sobre herramientas, no están disponibles en AWT,
      • hay muy pocos componentes AWT estándar, un programador tiene que implementar muchos personalizados,
      • el programa se ve diferente en diferentes plataformas (puede estar torcido).

      conclusión:

      Actualmente, AWT se usa muy raramente, principalmente en proyectos y applets más antiguos. Oracle ha ordenado el entrenamiento y alienta el movimiento a Swing. Es comprensible, el acceso directo a los componentes del eje puede convertirse en un grave agujero de seguridad.

      ¿Cómo se ve Swing?

      Después de AWT, Sun desarrolló un conjunto de componentes gráficos llamados Swing. Los componentes Swing están completamente escritos en Java. 2D se usa para renderizar, lo que trajo consigo varias ventajas a la vez. El conjunto de componentes estándar supera ampliamente a AWT en variedad y funcionalidad. Se ha vuelto fácil crear nuevos componentes, heredando de los existentes y dibujando lo que tu corazón desee. El soporte para varios estilos y máscaras se ha hecho posible. Sin embargo, la velocidad de las primeras versiones de Swing dejó mucho que desear. Un programa escrito incorrectamente podría bloquear completamente Windows.

      Sin embargo, debido a su facilidad de uso, su rica documentación y la flexibilidad de sus componentes, Swing se ha convertido quizás en el marco gráfico más popular en Java. Muchas extensiones han aparecido sobre la base, como SwingX, JGoodies, que simplifican enormemente la creación de interfaces de usuario complejas. Casi todos los entornos de programación Java populares incluyen editores gráficos para formularios Swing. Por lo tanto, comprender y comenzar a usar Swing no es difícil.

      Ventajas:

      • parte del JDK, no es necesario instalar bibliotecas adicionales,
      • Swing tiene muchos más libros y respuestas en los foros. Google conoce todos los problemas, especialmente para los principiantes,
      • editor de formularios incorporado en casi todos los entornos de desarrollo,
      • basado en swing hay muchas extensiones como SwingX,
      • Soporte para varios estilos (Look and feel).

      Desventajas

      • una ventana con muchos componentes comienza a disminuir,
      • trabajar con gestores de diseño puede ser una verdadera pesadilla en interfaces complejas.

      Conclusión

      Swing vivió, Swing vivo, Swing vivirá. Aunque Oracle está tratando de promover JavaFX, Swing es, con mucho, el marco de interfaz de usuario de Java más popular.

      SWT: widget del tiempo

      Para demostrar las capacidades de las bibliotecas gráficas más populares y los principios básicos de trabajar con ellas, crearemos varios widgets pequeños que muestren información variada.

      Y comencemos, tal vez, con el widget más popular: mostrar el clima actual, para cuya implementación elegimos SWT.

      Cualquier programa SWT comienza con la creación de un objeto Display. Sirve como una especie de contexto de aplicación, que contiene los métodos necesarios para acceder a los recursos del sistema y proporciona un bucle de eventos. El siguiente paso es crear un objeto Shell igualmente importante. Shell es una ventana normal del sistema operativo. La visualización se pasa al constructor de shell para crear una ventana de nivel superior.

      Como estamos creando un widget, no necesitamos mostrar el borde de la ventana estándar y los botones de control; para esto, especificamos el indicador NO_TRIM. Para el fondo, utilizaremos la imagen: un rectángulo redondeado. En principio, una ventana SWT puede tomar cualquier forma. Para lograr este efecto, utilizamos la clase Región. Todo lo que se necesita es agregar a esta clase todos los puntos visibles de la imagen de fondo, omitiendo los transparentes.

      En imágenes de diferentes formatos, la transparencia se configura de manera diferente, por lo tanto, la información sobre áreas transparentes tampoco se extrae de la misma manera. Cree un área de fondo y agregue todos los puntos visibles allí:

      Establecer la forma de la ventana:

      Ahora necesita crear un detector de eventos para la ventana. Nos interesarán los eventos de dibujo de ventanas, eventos de mouse y pulsaciones de teclas para que la ventana se pueda mover por la pantalla.

      Entonces, al presionar la tecla Esc, la ventana se cierra. Cuando haga clic con el botón izquierdo del mouse en el área de la ventana, recuerde las coordenadas del clic. Cuando el mouse se mueve con el botón izquierdo presionado, movemos la ventana en la pantalla de acuerdo con el movimiento. En un evento de redibujado, dibujamos una imagen de fondo usando el contexto de gráficos GC.

      Asigne el oyente a los eventos de ventana correspondientes:

      Establezca el tamaño de la ventana en el tamaño de la imagen:

      Abra la ventana e inicie el bucle de eventos:

      No olvide liberar recursos usados ​​al final:

      Al iniciar el programa en esta etapa, obtenemos un rectángulo que se puede mover con el mouse y cerrar con Esc.

      Es hora de agregar contenido. Mostraremos el clima actual en forma de un icono de estado (soleado, lluvia, nieve ...), lecturas de temperatura y hora de la última actualización.

      Los administradores de diseño se utilizan para colocar componentes gráficos en una ventana en la forma requerida. El administrador de diseño no solo se ocupa de la disposición de los componentes, sino también de cambiarles el tamaño al cambiar el tamaño de una ventana. Para nuestro widget usaremos GridLayout. Este administrador organiza los componentes en celdas de una tabla imaginaria. Cree un GridBagLayout para dos columnas con anchos de columna diferentes (bandera falsa en el constructor), configúrelo como un administrador de diseño de ventana:

      Para la imagen de estado usamos el componente Etiqueta. Pasamos el objeto de ventana como padre. El segundo parámetro puede establecer el estilo del componente. Para cada componente, el conjunto de posibles indicadores de estilo es diferente, puede verlos en la documentación o directamente en la fuente del componente.

      Las banderas en la clase GridData significan que la etiqueta se ubicará en la parte superior izquierda, se estirará horizontal y verticalmente (banderas establecidas en verdadero) si hay espacio libre y ocupará una fila y una columna de la tabla de diseño.

      No hay fondo transparente de componentes en SWT, y un fondo blanco hará alarde detrás de la imagen de estado, lo que, por supuesto, no sería deseable. Por lo tanto, cree un objeto Color con el color de fondo de la ventana:

      Al final del programa, este objeto también debe borrarse llamando al método dispose. Establezca el color de fondo y la imagen de estado, que se pueden descargar del archivo de la misma manera que descargamos la imagen de fondo al principio:

      Ahora agregue una etiqueta con la temperatura actual y colóquela en la parte superior derecha de la ventana:

      Establecer algo de temperatura:

      Para registrar la temperatura en grados Celsius, se utiliza el número unicode del símbolo correspondiente con los caracteres de servicio u.

      La fuente predeterminada para las etiquetas de texto es demasiado pequeña. Así que crea uno nuevo y más grande:

      FontData [] fD = temperatureLabel.getFont (). GetFontData (), fD.setHeight (30), fD.setStyle (SWT.BOLD), Font newFont = new Font (display, fD), temperatureLabel.setFont (newFont), Font , como otros objetos de recursos, debe liberar. Para hacer esto, use el detector de eventos de destrucción de etiquetas:

      Finalmente, agregue una etiqueta con una descripción de las condiciones climáticas:

      El texto puede ser bastante largo, por lo tanto, al crear una etiqueta, especifique el indicador WRAP para que el texto se divida automáticamente en varias líneas cuando no haya suficiente espacio. Centre el componente y deje que llene todo el espacio horizontal. También indicamos que el componente ocupa dos columnas de la tabla de diseño. Iniciamos y obtenemos una ventana de la imagen Weather Widget.

      Widget del tiempo

      Ahora puede fijar algún servicio meteorológico, crear un temporizador para la actualización automática, y el widget está listo.

      Swing, AWT y SWT

      29 de enero de 2012 9:44 p.m.

      Hay un fragmento de código:

      ayuda a implementar el cursor sobre la celda.
      ejemplo:

      29 de enero de 2012 21:54

      Hay un fragmento de código:

      ayuda a implementar el cursor sobre la celda.
      ejemplo:

      Herede su clase de la clase Componente y comience a leer sobre Mouse [Motion] Listener:

      29 de enero de 2012 10:44 p.m.

      Lo siento, del inglés. Realmente no conmigo.
      Por lo que entendí, lo hice, por alguna razón no funciona = (

      en algún lugar del borde superior de la ventana funciona, no está claro.

      29 de enero de 2012 10:54 p.m.

      Lo siento, del inglés. Realmente no conmigo.
      Por lo que entendí, lo hice, por alguna razón no funciona = (

      en algún lugar del borde superior de la ventana funciona, no está claro.

      29 de enero de 2012 23:32

      Pido disculpas por la importunidad.

      En realidad, qué estoy tratando de lograr:
      1. Crear una cuadrícula.
      2. Cuando haga clic en una de las celdas, cambie su color.

      Esto es lo que tengo:

      ¿Podría señalar los defectos?

      Hasta ahora, escribí en "actionscript" para esto mucho no está claro.
      Lo siento de nuevo y gracias por la ayuda.

      30 de enero de 2012 07:19

      Prueba JTable o GridLayout.
      Probablemente también sea mejor colocar un oyente y un controlador en el componente principal, que recibirá el objeto de celda por las coordenadas del clic y cambiará su color.

      30 de enero de 2012 08:19

      Gracias, lo hice (al revisar un montón de videos de YouTube).
      Aquí está el resultado:

      Pero entonces nació un nuevo problema = (

      Si creo un JFrame con un tamaño (por ejemplo) de 700x500px, resulta que a la derecha de la malla creada hay un ancho de sangría de 200 píxeles, es decir. Área libre, sin uso.
      La pregunta es: - ¿Por qué los receptores del mouse continúan respondiendo si el cursor del mouse está fuera de la grilla?
      Solo quiero entender cómo funciona JPanel y si usarlo.

      Un momento más incomprensible:
      Hay un JFrame 500x500px. Agrego en él el segundo "JPanel" - y.
      Es lógico que uno de ellos esté debajo del otro, pero aquí se explica cómo moverse y establecer el ancho para ellos.
      No puedo encontrar la respuesta, es decir Vi ejemplos, pero todo a mi alrededor está mal con mis manos.

      Gracias de nuevo por ayudar.

      30 de enero de 2012 10:07 a.m.

      Si creo un JFrame con un tamaño (por ejemplo) de 700x500px, resulta que a la derecha de la malla creada hay un ancho de sangría de 200 píxeles, es decir. Área libre, sin uso.
      La pregunta es: - ¿Por qué los receptores del mouse continúan respondiendo si el cursor del mouse está fuera de la grilla?
      Solo quiero entender cómo funciona JPanel y si usarlo.

      Un momento más incomprensible:
      Hay un JFrame 500x500px. Agrego en él el segundo "JPanel" - y.
      Es lógico que uno de ellos esté debajo del otro, pero aquí se explica cómo moverse y establecer el ancho para ellos.
      No puedo encontrar la respuesta, es decir Vi ejemplos, pero todo a mi alrededor está mal con mis manos.

      Mira el video: Librería Swing - Interfaces GUI Jframe 5-25 Curso de Java - Algoritmos y Programación en Netbeans (Septiembre 2021).

      Pin
      Send
      Share
      Send
      Send