Skip to Main Content

Java HotSpot Virtual Machine

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Overriding Interface methods via JNI

893718Oct 11 2011 — edited Oct 11 2011
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

Comments

Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Nov 8 2011
Added on Oct 11 2011
1 comment
3,860 views