1 Reply Latest reply: Oct 11, 2011 4:35 AM by EJP RSS

    Overriding Interface methods via JNI

    893718
      Hello,

      How we can override Interface methods via JNI?

      For example:

      At HelloWorldSwing example:

      http://download.oracle.com/javase/tutorial/uiswing/examples/start/HelloWorldSwingProject/src/start/HelloWorldSwing.java

      I've written anonymous Interface as:
      import javax.swing.*;        
      
      public class HelloWorldSwing1 {
          /**
           * Create the GUI and show it.  For thread safety,
           * this method should be invoked from the
           * event-dispatching thread.
           */
          private static void createAndShowGUI() {
              //Create and set up the window.
              JFrame frame = new JFrame("HelloWorldSwing");
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
              //Add the ubiquitous "Hello World" label.
              JLabel label = new JLabel("Hello World");
              frame.getContentPane().add(label);
      
              //Display the window.
              frame.pack();
              frame.setVisible(true);
          }
          
          static Runnable runnableObject = new Runnable() {
               public void run() {
                    createAndShowGUI();              
               }
          };
          
         public static void main(String[] args) {
               //Schedule a job for the event-dispatching thread:
              //creating and showing this application's GUI.
              SwingUtilities.invokeLater(runnableObject);
          }
      }
      via JNI functions(http://download.oracle.com/javase/1.4.2/docs/guide/jni/spec/functions.html) we cannot override Runnable Interface's run method? Can we?

      Only:

      RunnableClass's value isn't null with given example at below. FindClass finds the Runnable Interface.
      jclass RunnableClass;
      RunnableClass = (*env)->FindClass(env,"java/lang/Runnable");
        if( RunnableClass == NULL ) {
          printf("can't find class Runnable\n");
          exit (-1);
        }
      But How can we override Runnable class's run method?

      Thanks in Advance