Simple gráfico-visualización de Javafx Ejemplo en Nashorn -- javascript campo con javafx camp codereview Relacionados El problema

Simple chart-viewing JavaFX example on Nashorn


1
vote

problema

Español

Estoy pirateando algunos primeros ejemplos en JavaScript (Nashorn) para ver un cuadro simple. Dado que mi fondo es "Programador Java", estoy seguro de que hay formas en que puedo tener más beneficios de la sintaxis de JavaScript de la que estoy usando.

Estoy abierto a las críticas para obtenerlo más más corto, más elegante, más idiomático que un codificador Java lo escribe en sus primeros intentos.

  Init_to_wide_char.h0  
Original en ingles

I'm hacking together some first examples on JavaScript (Nashorn) for viewing a simple chart. Since my background is "Java programmer" I'm sure there are ways where I can have more benefit from JavaScript syntax than I'm using.

I'm open to criticism to get it more shorter, more elegant, more idiomatic than a Java coder writes it down in his first attempts.

load("fx:base.js"); load("fx:controls.js");  var Button = javafx.scene.control.Button; var StackPane = javafx.scene.layout.StackPane; var Scene = javafx.scene.Scene;  function start(primaryStage) {     primaryStage.title = "Hello World!";      var xAxis = new NumberAxis();     xAxis.setLabel("Number of Month");     var yAxis = new NumberAxis();      var lineChart = new LineChart(xAxis, yAxis);     lineChart.setTitle("Stock Monitoring 2010");      var series1 = new XYChart.Series();     series1.setName("Reference portfolio");      [new XYChart.Data(1,2),      new XYChart.Data(2,1),      new XYChart.Data(3,9),      new XYChart.Data(4,5),      new XYChart.Data(5,7),      new XYChart.Data(6,6)     ].forEach(function(item){         series1.data.add(item);     });      lineChart.data.add(series1);      var series2 = new XYChart.Series();     series2.setName("My portfolio");      [new XYChart.Data(1,12),     new XYChart.Data(2,11),     new XYChart.Data(3,19),     new XYChart.Data(4,15),     new XYChart.Data(5,17),     new XYChart.Data(6,16)].forEach(function(item){         series2.data.add(item);     })      lineChart.data.add(series2);      var scene = new Scene (lineChart, 800, 600);     primaryStage.scene = scene;     primaryStage.show(); } 
     

Lista de respuestas

1
 
vote

Pregunta interesante,

De un alto nivel, creo que será difícil escribir javascript idiomático utilizando bibliotecas que son puertos rectos de Java ..

En mi mente (es decir, esto no es canónico), JS tiende a hacer más durante la inicialización para que este

   var data1 = [      new XYChart.Data(1,2),      new XYChart.Data(2,1),      new XYChart.Data(3,9),      new XYChart.Data(4,5),      new XYChart.Data(5,7),      new XYChart.Data(6,6) ];   var series1 = new XYChart.Series( "Reference portfolio" , data1 );   

parece más natural que este

  var series1 = new XYChart.Series(); series1.setName("Reference portfolio");  [new XYChart.Data(1,2),  new XYChart.Data(2,1),  new XYChart.Data(3,9),  new XYChart.Data(4,5),  new XYChart.Data(5,7),  new XYChart.Data(6,6) ].forEach(function(item){     series1.data.add(item); });   

Además, de una perspectiva var declaration2 , usted agrúa todas sus declaraciones en la parte superior o las declaras a donde las usarás. Tienes una mezcla de ambos enfoques. Especialmente la Declaración de lineChart parece innecesariamente extraño, simplemente lidiaría con lineChart al final.

  var lineChart = new LineChart(xAxis, yAxis); //Could have been on top lineChart.setTitle("Stock Monitoring 2010"); lineChart.data.add(series1); lineChart.data.add(series2);   

Lo mismo ocurre con primaryStage , hubiera establecido title en el mismo espacio que primaryStage.scene = scene que la mayoría de las personas de JS habrían escrito como < Código> var series1 = new XYChart.Series(); series1.setName("Reference portfolio"); [new XYChart.Data(1,2), new XYChart.Data(2,1), new XYChart.Data(3,9), new XYChart.Data(4,5), new XYChart.Data(5,7), new XYChart.Data(6,6) ].forEach(function(item){ series1.data.add(item); }); 0 Si va a usar la variable solo una vez, y no está en peligro de estirar demasiado horizontalmente, solo haga una tarea directa.

Esto se ve mucho como un código de ejemplo, creo que sus java'isms mostrarán más una vez que ingrese a la nitty arenosa. Así que estoy esperando que publique algunos de su código JS real.

 

Interesting question,

from a high level, I think it will be hard to write idiomatic JavaScript using libraries that are straight ports out of Java..

In my mind (meaning, this is not canonical), JS tends to do more during initialization so that this

 var data1 = [      new XYChart.Data(1,2),      new XYChart.Data(2,1),      new XYChart.Data(3,9),      new XYChart.Data(4,5),      new XYChart.Data(5,7),      new XYChart.Data(6,6) ];   var series1 = new XYChart.Series( "Reference portfolio" , data1 ); 

seems more natural than this

var series1 = new XYChart.Series(); series1.setName("Reference portfolio");  [new XYChart.Data(1,2),  new XYChart.Data(2,1),  new XYChart.Data(3,9),  new XYChart.Data(4,5),  new XYChart.Data(5,7),  new XYChart.Data(6,6) ].forEach(function(item){     series1.data.add(item); }); 

Also, from a var declaration perspective, you either group all your var statements on top or you declare them to where you are going to use them. You have a mixture of both approaches. Especially the declaration of lineChart looks needlessly odd, I would simply deal with lineChart at the very end.

var lineChart = new LineChart(xAxis, yAxis); //Could have been on top lineChart.setTitle("Stock Monitoring 2010"); lineChart.data.add(series1); lineChart.data.add(series2); 

The same goes for primaryStage, I would have set title in the same space as primaryStage.scene = scene which most JS people would have written as primaryStage.scene = new Scene (lineChart, 800, 600); if you are going to use the variable only once, and you are not in danger of stretching too much horizontally, just do a direct assignment.

This very much looks like sample code, I think your Java'isms will show more once you get into the nitty gritty. So I am looking forward to you posting some of your real JS code.

 
 

Relacionados problema

6  Demonstación gráfica en vivo de un algoritmo de búsqueda de primera búsqueda  ( Live graphical demonstation of a breadth first search algorithm ) 
Como primer paso para hacer un clon de Pacman, escribí una demostración de búsqueda de primeras que se actualiza a sí misma en vivo a medida que atrae paredes...

3  Módulo de Google Guice que carga dos tipos de vistas  ( Google guice module that loads two kinds of views ) 
El código de mi módulo de Guice se ve así: public class FXMLModule extends AbstractModule { private final Locale locale = Locale.getDefault(); pri...

6  Este loginpane es un dolor  ( This loginpane is a pain ) 
Bueno, realmente no es un gran dolor: pero temo a los riesgos de seguridad (si eso es posible). Fondo: Decidí (tipo de) abandono mi proyecto sudoku (porqu...

11  Opciones, opciones, opciones. Ninguno para Javafx?  ( Options options options none for javafx ) 
Estaba mirando a través de la biblioteca Javafx, y vio que Javafx no tiene un 99887776655544330 equivalente . (O al menos no en mi versión, ya que @legato ...

34  Clon a todo color del juego de la vida de Conway, con una GUI decente  ( Full color clone of conways game of life with a decent gui ) 
Escribí esto para aprender Javafx, y como excusa para volver a hacer el juego de la vida. Esta es la gui más compleja que he escrito, así que me gustaría come...

5  Sistema de control de stock  ( Stock control system ) 
He programado este sistema de control de stock simple utilizando Javafx para GUI y PostgreSQL para una base de datos. Por favor, vaya a través de mi código ...

1  Javafx Guardar método para dos archivos  ( Javafx save method for two files ) 
Estoy trabajando en una aplicación Javafx donde el usuario a través de una serie de campos de texto y menús desplegables tiene que crear algún tipo de informe...

11  Componente de la consola en Javafx  ( Console component in javafx ) 
Me gustaría una revisión en mi Console Hecho en Javafx 8. Presenta lo siguiente: Un campo de texto donde puede ingresar la entrada, la entrada se copia e...

15  CircularListcursor: un cursor circular eficiente en cualquier lista  ( Circularlistcursor an efficient circular cursor on any list ) 
He decidido crear mi propio CircularListCursor , porque quería una abstracción y un 9988777655544338 no podría dar lo suficiente en mi opinión. También est...

3  Javafx FXML / Switherer  ( Javafx fxml window switcher ) 
Me gustaría escribir una aplicación simple donde voy a hacer algunas vistas: inicio de sesión registro aplicación principal Creo que mi método no es...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos