This is the mail archive of the
kawa@sources.redhat.com
mailing list for the Kawa project.
I need help creating an anonymous class with (object
- To: <kawa at sourceware dot cygnus dot com>
- Subject: I need help creating an anonymous class with (object
- From: "Andre Labelle" <andrelabelle at sympatico dot ca>
- Date: Mon, 19 Mar 2001 01:43:10 -0500
- Organization: Ammunerve
When I click the button it gives me a NullPointerException. I can read
'num-clicks' from within the anonymous class method but I can't 'set!' it.
I have no clue. Don't be surprised if I'm doing something bazerko. I'm
brand new to this. Thanks for any help.
-Andre.
Oh ya:
kawa version 1.60.70
WindowsMe
java version "1.2.2"
Classic VM (J2RE 1.2.2 IBM build wn122-20000720 (JIT enabled: jitc))
Here's the source:
(invoke-static <javax.swing.UIManager> 'setLookAndFeel
(invoke-static <javax.swing.UIManager>
'getCrossPlatformLookAndFeelClassName))
(define label-prefix "Number of button clicks: ")
(define num-clicks 0)
(define label (make <javax.swing.JLabel> "0 "))
(define button (make <javax.swing.JButton> "Swing button!"))
(define pane (make <javax.swing.JPanel>))
(define frame (make <javax.swing.JFrame> "SwingApplication"))
(invoke button 'setMnemonic #\i)
(invoke (as <javax.swing.JButton> button) 'addActionListener
(object
(<java.awt.event.ActionListener>)
((actionPerformed (e <java.awt.event.ActionEvent>)) <void>
(display "got action on button -- Jiffy Rules")
;;;
;;; This chunk of code causes a problem
;;;
(set! num-clicks (+ 1 num-clicks))
;;;
;;;
;;;
; (invoke
; (as <javax.swing.JLabel> label)
; 'setText
; (as <java.lang.String>
; (string-append label-prefix
; (number->string num-clicks))))
(newline))))
(invoke label 'setLabelFor button)
(invoke pane 'setBorder
(invoke-static <javax.swing.BorderFactory> 'createEmptyBorder
30 30 10 30))
(invoke pane 'setLayout (make <java.awt.GridLayout> 0 1))
(invoke pane 'add button)
(invoke pane 'add label)
(invoke (invoke frame 'getContentPane) 'add pane
(static-field <java.awt.BorderLayout> 'CENTER))
(invoke (as <javax.swing.JFrame> frame) 'addWindowListener
(object
(<java.awt.event.WindowAdapter>)
((windowClosing (e <java.awt.event.WindowEvent>))
(exit))))
(invoke frame 'pack)
(invoke frame 'setVisible #t)