2009-07-24 18 views
13

código Java:¿Cómo se llaman objetos Scala de Java?

import javax.swing.Timer; 
class Main { 
    public static void main(String args[]) { 
    MyListener myListener = new MyListener(); 
     Timer timer = new Timer(1000, myListener); 
    timer.start(); 
     while(timer.isRunning()) { 
      System.out.print("."); 
     } 
    } 
} 

Scala código:

import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
class MyListener extends ActionListener { 
    override def actionPerformed(arg0: ActionEvent) { 
     println("Do something"); 
    } 
} 

Línea de comandos:

scalac MyListener.scala 
javac Main.java 
java -cp /usr/share/java/scala-library.jar:. Main 
+2

debería funcionar multa. ¿Qué pasa cuando lo intentas? – skaffman

+0

No sabía por dónde empezar y por lo que leí en google-ing me pareció un poco más complejo. Malditos posts ANTIGUOS (2008), me alegra que Scala haya estado en un desarrollo muy activo. Actualicé mi pregunta con lo que hice. – givanse

Respuesta

12

me gustaría empezar utilizando java.util.Timer - no javax.swing.Timer . El temporizador de oscilación no funcionará a menos que esté ejecutando su aplicación con una GUI (es decir, no funcionará si lo ejecuta en Linux a través de una consola sin un parámetro de línea de comando especial; es mejor evitarlo).

Ajuste que a un lado:

  1. estar seguros, que cuando intenta ejecutar el código, se incluye scala-library.jar en su ruta de clase.

  2. No se olvide de iniciar el temporizador - timer.start()

Este código funcionó bien para mí (el código Scala requiere ninguna modificación):

MyListener myListener = new MyListener(); 
Timer timer = new Timer(1000, myListener); 
timer.start(); 
Thread.sleep(10000); 
+0

De acuerdo con el jdk-6-doc, solo javax.swing.Timer recibe un ActionListener en su constructor y necesito que active otras acciones. – givanse

Cuestiones relacionadas