package Dnd;

import java.awt.GridLayout; 
import javafx.application.Application; 
import javafx.embed.swing.SwingNode; 
import javafx.scene.Scene; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.SwingUtilities; 

public class SwingFx extends Application { 

	@Override 
	public void start(Stage stage) { 
		final SwingNode swingNode = new SwingNode(); 

		createSwingContent(swingNode); 

		StackPane pane = new StackPane(); 
		pane.getChildren().add(swingNode); 

		stage.setTitle("JavaFX Sample App"); 
		stage.setScene(new Scene(pane, 800, 600)); 
		stage.show(); 
	} 
	private static JPanel createPanel() { 
		JButton button = new JButton("Click Here!"); 
		JTextField field = new JTextField("Text"); 
		field.setDragEnabled(true); 
		button.addActionListener(new ActionListener() { 

			@Override 
			public void actionPerformed(ActionEvent e) { 
				System.out.println("Button Clicked!!!"); 
			} 
		}); 
		JPanel p = new JPanel(new GridLayout(1, 2)); 
		p.add(button); 
		p.add(field); 
		return p; 
	} 

	private void createSwingContent(final SwingNode swingNode) { 
		SwingUtilities.invokeLater(new Runnable() { 
			@Override 
			public void run() { 
				swingNode.setContent(createPanel()); 
			} 
		}); 
	} 
	public static void main(String[] args) { 
		boolean testFX = true; 

		if (testFX) 
			Application.launch(SwingFx.class, args); 
		else { 
			SwingUtilities.invokeLater(() -> { 
				JFrame frame = new JFrame(); 
				frame.setSize(200, 200); 
				frame.setContentPane(createPanel()); 
				frame.setVisible(true); 
			});
		}
	} 
} 
