elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27
141  Programación / Ejercicios / Re: Ejercicio en Java usando swing en: 16 Noviembre 2013, 16:31 pm
Hola,

1) Estudia Swing.

2) Practica

3) Investiga

4) Intenta solucionar tu problema. Si no puedes algunas cosas, recién puedes preguntar en los foros.

Es por demás que creen éste tipo de temas. Nunca serán leídos, a nadie le gusta hacer la tarea de otro.


Saludos.
142  Programación / Java / Re: [Source] [JavaFX] [MySQL] - FXAgenda en: 16 Noviembre 2013, 16:07 pm
Hola, gracias por comentar.

Respecto a si cambia mucho con respecto a Swing es sí. La arquitectura es diferente, es más organizada, más flexible. Por ejemplo, con FX los EventHandler son muy flexibles, le puedes dar un determinado tipo de listener a tus controles que con Swing no sería posible. Puedes usar CSS para darle el estilo deseado a tus controles.

Otro punto es que, la forma en como se trabaja no es muy diferente a Swing. En Swing se hereda de JFrame para hacer una ventana, y con FX se hereda de Application. La lógica en realidad, no es muy diferente. La transición de Swing a FX no es muy dura.

Puedes crear una GUI con FX de 2 formas:

1) Manualmente (Por código Java)
2) Por medio de Scene Builder.

La ventana de hacerlo por Scene Builder es que tu puedes diseñar tu GUI simplemente arrastrando controles (como Visual Studio), pero la ventaja es que no te genera código Java, si no código FXML.

FXML es un lenguaje de etiquetado con el que podemos crear nuestras GUI's, no se mezcla en nada con código Java. De esta manera, se separa una clase Controladora y la vista (FXML).

Cuando creamos una GUI con SceneBuilder tenemos que especificar cuál es la clase Controladora que manejará la GUI.

Primero, tienes que crear un proyecto JavaFX FXML Aplication o si quieres usar un paquete dentro de un proyecto ya existente, simplemente dale clic derecho -> Other -> JavaFX - Empty FXML.

Te creará un archivo FXML. Ábrelo así:


Luego ya puedes empezar a crear la GUI. En el apartado izquierdo, tendrás los Paneles y Controles. Para colocarlo en tu GUI simplemente arrástralos. En el apartado derecho verás una columna con 3 secciones:

  • Properties: Aquí puedes editar las propiedades del control, como color de texto, tamaño y tipo de fuente, etc y además puedes agregar un archivo CSS.
  • Layout: Aquí puedes modificar el tamaño, y cualquier cosa que tenga que ver con el layout.
  • Code: Aquí especificas el identificador que tendrá el control en tu clase Controladora, y los distintos tipos de eventos que le quieras aplicar.

Aquí le digo al control qué metodo será el que desencadene los eventos:


Cuando termines de crear la GUI, tienes que especificar la clase Controladora en propiedades de AnchorPane:





Ejemplo Completo:


ControladoraVista:
Código
  1. import java.net.URL;
  2. import java.util.ResourceBundle;
  3. import javafx.fxml.FXML;
  4. import javafx.fxml.Initializable;
  5. import javafx.scene.control.Button;
  6. import javafx.scene.control.Label;
  7. import javafx.scene.control.TextField;
  8.  
  9. /**
  10.  *
  11.  * @author mitsu
  12.  */
  13. public class ControladoraVista implements Initializable {
  14.  
  15.    @FXML TextField txtMsg;
  16.    @FXML Button btnShow;
  17.    @FXML Label lblShowMsg;
  18.  
  19.  
  20.    @FXML public void btnShowAction() {
  21.        lblShowMsg.setText(txtMsg.getText());
  22.    }
  23.  
  24.  
  25.    @Override
  26.    public void initialize(URL url, ResourceBundle rb) {
  27.  
  28.    }
  29.  
  30.  
  31. }
  32.  

Como puedes ver, hay algunas anotaciones de tipo @FXML. Bien, esto lo que hace, es asociar un control o evento con el archivo FXML. por lo que, de esta manera, podemos utilizar los controles que hemos diseñado previamente en la GUI  con Scene Builder.

Un punto importante es éste método:
Código
  1. @FXML public void btnShowAction() {
  2.        lblShowMsg.setText(txtMsg.getText());
  3.    }
  4.  

Lo que hace la antonación aquí es: Asociar el evento del botón con este método. Ya no es necesario utilizar EventHandler, si no, directamente se escribe un método simple, con lo que queremos que haga ese botón.

El método se utiliza por si quieres inicializar algo, como una tabla por ejemplo, una lista, etc:
Código
  1. @Override
  2.    public void initialize(URL url, ResourceBundle rb) {
  3.  
  4.    }
  5.  


Vista.fxml
Código
  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <?import java.lang.*?>
  4. <?import java.util.*?>
  5. <?import javafx.scene.*?>
  6. <?import javafx.scene.control.*?>
  7. <?import javafx.scene.layout.*?>
  8. <?import javafx.scene.text.*?>
  9.  
  10. <AnchorPane id="AnchorPane" prefHeight="283.0" prefWidth="338.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="javase.javafx.demo.ControladoraVista">
  11.  <children>
  12.    <Pane layoutX="0.0" layoutY="0.0" prefHeight="283.0" prefWidth="338.0">
  13.      <children>
  14.        <Label layoutX="29.0" layoutY="50.0" text="Mensaje:" />
  15.        <TextField fx:id="txtMsg" layoutX="115.0" layoutY="47.0" prefWidth="178.0" />
  16.        <Button fx:id="btnShow" layoutX="138.0" layoutY="97.0" mnemonicParsing="false" onAction="#btnShowAction" text="Mostrar" />
  17.        <Label fx:id="lblShowMsg" layoutX="29.0" layoutY="163.0" prefHeight="42.1328125" prefWidth="277.0" text="" textFill="#00a3ff">
  18.          <font>
  19.            <Font size="16.0" />
  20.          </font>
  21.        </Label>
  22.      </children>
  23.    </Pane>
  24.  </children>
  25. </AnchorPane>
  26.  

Ésta parte es la que asocia la clase Controladora con la GUI:

Código
  1. fx:controller="javase.javafx.demo.ControladoraVista">
  2.  

Aquí es donde especificamos el evento para el botón:

Código
  1. <Button fx:id="btnShow" layoutX="138.0" layoutY="97.0" mnemonicParsing="false" onAction="#btnShowAction" text="Mostrar" />
  2.  



Clase principal:
Código
  1. package javase.javafx.demo;
  2.  
  3. import java.io.IOException;
  4. import javafx.application.Application;
  5. import javafx.fxml.FXMLLoader;
  6. import javafx.scene.Parent;
  7. import javafx.scene.Scene;
  8. import javafx.stage.Stage;
  9.  
  10. /**
  11.  *
  12.  * @author mitsu
  13.  */
  14. public class Principal extends Application {
  15.  
  16.    public static void main (String[] args) {
  17.        launch(args); // metodo encargado de lanzar la aplicacion
  18.    }
  19.    @Override
  20.    public void start(Stage stage) {
  21.        stage.setTitle("JavaFX Demo");
  22.        Parent root = null;
  23.        // carga el archivo FXML e inicializa la stage, scene y hace visible la stage
  24.                try {
  25. root = FXMLLoader.load(getClass().getResource("/javase/javafx/demo/Vista.fxml"));
  26.                        Scene scene = new Scene(root); // agrega el panel Group a la escena
  27.                        stage.setScene(scene); // establece esta escena para la stage
  28.                        stage.setResizable(false);
  29.                        stage.show(); // equivalente a 'setVisible(true)
  30. } catch (IOException e) {
  31. System.err.println(e);
  32.                        System.exit(0);
  33.                }
  34.  
  35.    }
  36.  
  37. }
  38.  



Notas:

  • El método start() es el que se encarga de crear la GUI. Es por ésto que aquí es donde cargamos el archivo .fxml.
  • En el método main, tenemos el método launch() que es el encargado de levantar la aplicación.



Resultado:


143  Foros Generales / Foro Libre / Re: Santiago Gonzales, 'Genio' de la programación de 14 años. en: 15 Noviembre 2013, 22:00 pm
No es Linux, es Mac. A mi parecer, lejos de ser un superdotado que domina 12 lenguajes de programación, me parece que ha logrado aprender muy bien Objective-C.

Citar
Espero que le por programar para Linux!

¿Quieres decir que ayude con el desarrollo  del kernel o algunas distros?

144  Programación / Java / Re: Duda ejercicio java en: 15 Noviembre 2013, 21:56 pm
Hola. Lo más normal en casos como estos es hacer Llamada clase abstracta, y hacer que las clases LlamadaLocal y LlamadaPronvincial la extiendan. No necesitamos tener una instancta de Llamada, ya que es solo una abstracción, sus hijas LlamadaLocal y LlamadaProvincial son especializaciones de su padre.

Una clase abstracta no puede instanciarse. Cuando hacemos una clase abstracta el objetivo es 'abstraer' la idea general. Las especificaciones de ésta abstracción serán justamente sus hijas. En tu caso, yo haría Llamada Abstracta y dejaría que las hijas sean las que implementen las especificaciones.
145  Programación / Programación General / Re: POO - ¿Diferencia entre usar una constructora-copiadora a Objeto = Objeto? en: 15 Noviembre 2013, 15:13 pm
Pasar un objeto por valor es lo que normalmente hacemos. En el caso de Java, los parámetros de tipos básicos se pasan por valor y los objetos por referencia. Esto significa que a todo valor que reciba una función, le hará una copia y trabajará con ella.

Cuando se dice que se pasa por referencia, lo que estamos haciendo es accediendo a la dirección de memoria del objeto pero mediante una copia también. Esta copia es la que permite el acceso a la dirección del objeto. De esta manera, si se modifica la copia del objeto, se modificará también el objeto original.

Más información: Pasar por valor y por referencia en una función.
146  Programación / Java / Re: AYUDA SOBRE CODIGO en: 15 Noviembre 2013, 04:24 am
Imprime el arreglo registros para ver si la consulta ha devuelto los valores esperados. Acostúmbrate a hacer esto, a hacer pequeñas pruebas hasta dar con el origen del problema.
147  Programación / Java / Re: Dibujar con Graphics encima de un panel con una imagen de fondo en: 14 Noviembre 2013, 20:56 pm
ImageIO.read() está retornando null. Esto significa, que el path de la imagen está mal. Si tienes la imagen en un subpaquete, no olvides colocar "/" al principio del path.
148  Programación / Java / Re: [Curso] Introducción a Java GRATIS c/apuntes y ejercicios incluidos en: 14 Noviembre 2013, 20:32 pm
Hola,

Te agradezco por tus aportes, pero mejor sería que hables con un Mod a ver si le ponen chincheta a este tema, ya que por lo visto, lo vas a estar actualizando muy seguido. Esto para que haya más orden.

Saludos.
149  Programación / Java / Re: Duda Swing en: 14 Noviembre 2013, 20:23 pm
La arquitectura de Swing así lo establece. Si un hay un TextField en un JPanel por defecto obtendrá el focus, esto es de manera predeterminada.

Si quieres evitar esto, simplemente en un JLabel que haya en el form, hazle ganar el focus.

Código
  1. label.requestFocus();
  2.  

Obviamente no se verá nada ni se coloeará nada en el label que tiene el focus. Es como si nada pasara.
150  Foros Generales / Noticias / Re: Cosmonauta ruso infecta con virus los equipos informáticos de la Estación ... en: 13 Noviembre 2013, 20:13 pm
Si , por esto ahora la gente de la nasa se ha pasado a debian gnu/linux , puesto que toda esta m i e r d a windowsera no sucede en linux :)

El objetivo siempre es el pez más 'gordo'. Si todo el mundo usara GNU/Linux tuvieras los mismos problemas que con Windows. El SO no es el problema en sí, si no el usuario.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines