Need some help with Java - Kawa interop

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Need some help with Java - Kawa interop

Arie van Wingerden
Trying to generate a random color for a shape in JavaFX.
This (lines 7-9 are the binding of r, g and b):

> (define (randomColor)

  (let (

    (rnd (java.lang.Math:random))

    (r (java.util.Random:nextInt 255))

    (g (java.util.Random:nextInt 255))

    (b (java.util.Random:nextInt 255)))

  (Color:rgb r g b)))


Generates warnings:
.\test.scm:7:34: warning - type integer is incompatible with required type
java.util.Random
.\test.scm:8:34: warning - type integer is incompatible with required type
java.util.Random
.\test.scm:9:34: warning - type integer is incompatible with required type
java.util.Random
.\test.scm:7:8: warning - cannot convert literal (of type gnu.math.IntNum)
to ClassType java.util.Random
.\test.scm:8:8: warning - cannot convert literal (of type gnu.math.IntNum)
to ClassType java.util.Random
.\test.scm:9:8: warning - cannot convert literal (of type gnu.math.IntNum)
to ClassType java.util.Random

What am I doing wrong?

TIA
Reply | Threaded
Open this post in threaded view
|

Re: Need some help with Java - Kawa interop

Per Bothner
On 11/1/18 6:44 AM, Arie van Wingerden wrote:

> Trying to generate a random color for a shape in JavaFX.
> This (lines 7-9 are the binding of r, g and b):
>
>> (define (randomColor)
>    (let (
>      (rnd ((java.lang.Math:random))
>      (r (java.util.Random:nextInt 255))
>      (g (java.util.Random:nextInt 255))
>      (b (java.util.Random:nextInt 255)))
>    (Color:rgb r g b)))

nextInt is not  static method, so you need an instance.

(define (randomColor)
   (let* ((rnd (java.util.Random))
          (r (rnd:nextInt 255))
          (g (rnd:nextInt 255))
          (b (rnd:nextInt 255)))
     (java.awt.Color r g b)))


--
        --Per Bothner
[hidden email]   http://per.bothner.com/