2009-07-24 32 views
13

mã Java:Làm thế nào để bạn gọi các đối tượng Scala từ 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 mã:

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

dòng lệnh:

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

Nó sẽ làm việc khỏe. Điều gì xảy ra khi bạn cố gắng? – skaffman

+0

Tôi không biết bắt đầu từ đâu và từ những gì tôi đọc qua google, nó dường như phức tạp hơn một chút. Damn OLD posts (2008), tôi vui mừng Scala đã được phát triển rất tích cực. Tôi đã cập nhật câu hỏi của mình với những gì tôi đã làm. – givanse

Trả lời

12

Tôi muốn bắt đầu bằng cách sử dụng java.util.Timer - không javax.swing.Timer . Bộ hẹn giờ xoay sẽ không hoạt động trừ khi bạn đang chạy ứng dụng của mình bằng GUI (ví dụ: nó sẽ không hoạt động nếu bạn chạy nó trên Linux thông qua một bàn điều khiển không có tham số dòng lệnh đặc biệt - tránh tốt nhất).

Setting rằng ngoài:

  1. Hãy chắc chắn rằng khi bạn cố gắng chạy mã này, bạn bao gồm scala-library.jar trên classpath của bạn.

  2. Đừng quên để bắt đầu hẹn giờ - timer.start()

Mã này đã làm việc tốt cho tôi (mã Scala không cần sửa đổi):

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

Theo jdk-6-doc chỉ javax.swing.Timer nhận được một ActionListener trong hàm tạo của nó và tôi cần nó để kích hoạt một số hành động khác. – givanse

Các vấn đề liên quan