2009-07-24 12 views
13

Javaコード:JavaからScalaオブジェクトをどのように呼び出すのですか?

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のコード:

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

コマンドライン:

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

それが動作するはずです良い。試してみるとどうなりますか? – skaffman

+0

どこから始めたらいいのかわかりませんでした。グーグルイングで読んだところでは、もう少し複雑に思えました。私はScalaが非常に積極的に開発されていることをうれしく思っています。私は自分の質問を更新しました。 – givanse

答えて

12

私はjava.util.Timerを使用して起動したい - のjavax.swing.Timerありません。スイングタイマーは、GUIを使ってアプリケーションを実行していない限り(つまり、特別なコマンドラインパラメータを使わずにLinux上で実行するとうまくいきません。余談

設定:

  1. は、あなたがコードを実行しようとすると、あなたのクラスパス上のScala-library.jarが含まれていることを、確認してください。

  2. は、タイマーを開始することを忘れないでください - timer.start()

このコードは(Scalaのコードは何も変更を必要としない)私のためにうまく働いた:

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

jdk-6-docによると、javax.swing.TimerはそのコンストラクタでActionListenerを受け取り、他のアクションを起動するために必要です。 – givanse

関連する問題