Mouse Event এবং Keyboard Event Management

JavaFX Event Handling - জাভাএফএক্স (JavaFx) - Java Technologies

334

JavaFX তে Mouse Event এবং Keyboard Event হ্যান্ডলিং খুবই গুরুত্বপূর্ণ এবং প্রয়োজনীয়। আপনি যখন একটি GUI অ্যাপ্লিকেশন তৈরি করেন, তখন আপনার অ্যাপ্লিকেশনে ইউজার ইন্টারঅ্যাকশনের জন্য মাউস এবং কিবোর্ড ইভেন্ট সঠিকভাবে হ্যান্ডল করা জরুরি।

নিচে Mouse Event এবং Keyboard Event হ্যান্ডলিং এর উদাহরণ দেওয়া হলো।


Mouse Event Handling in JavaFX

JavaFX তে মাউস ইভেন্টের জন্য সাধারণত নিম্নলিখিত ইভেন্টগুলি ব্যবহৃত হয়:

  • Mouse Click: যখন ইউজার মাউস বাটনে ক্লিক করে।
  • Mouse Enter: যখন মাউস একটি নির্দিষ্ট উপাদান/অবজেক্টে প্রবেশ করে।
  • Mouse Exit: যখন মাউস একটি নির্দিষ্ট উপাদান/অবজেক্ট থেকে বের হয়ে যায়।
  • Mouse Drag: যখন মাউস বাটন চাপা অবস্থায় মাউস মুভ করা হয়।
  • Mouse Release: যখন মাউস বাটন ছেড়ে দেওয়া হয়।

উদাহরণ:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class MouseEventExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        // একটি রেকট্যাঙ্গল তৈরি করা
        Rectangle rectangle = new Rectangle(200, 150);
        rectangle.setStyle("-fx-fill: lightblue;");
        
        // Mouse Enter ইভেন্ট হ্যান্ডলিং
        rectangle.setOnMouseEntered(event -> {
            rectangle.setStyle("-fx-fill: lightgreen;");
            System.out.println("Mouse entered the rectangle");
        });

        // Mouse Exit ইভেন্ট হ্যান্ডলিং
        rectangle.setOnMouseExited(event -> {
            rectangle.setStyle("-fx-fill: lightblue;");
            System.out.println("Mouse exited the rectangle");
        });

        // Mouse Click ইভেন্ট হ্যান্ডলিং
        rectangle.setOnMouseClicked(event -> {
            System.out.println("Rectangle clicked at: " + event.getX() + ", " + event.getY());
        });

        // Mouse Drag ইভেন্ট হ্যান্ডলিং
        rectangle.setOnMouseDragged(event -> {
            rectangle.setX(event.getSceneX() - 100); // Move the rectangle
            rectangle.setY(event.getSceneY() - 75);  // Move the rectangle
        });

        // StackPane layout তৈরি
        StackPane root = new StackPane();
        root.getChildren().add(rectangle);

        // Scene তৈরি এবং সেট করা
        Scene scene = new Scene(root, 400, 300);
        primaryStage.setTitle("Mouse Event Example");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

ব্যাখ্যা:

  • Mouse Entered এবং Mouse Exited ইভেন্টের মাধ্যমে, আমরা রেকট্যাঙ্গলের রঙ পরিবর্তন করেছি।
  • Mouse Clicked ইভেন্টে, ক্লিক করার স্থান প্রিন্ট করা হয়েছে।
  • Mouse Dragged ইভেন্টে, রেকট্যাঙ্গলটি মাউস ড্র্যাগ করার মাধ্যমে স্থানান্তরিত হয়েছে।

Keyboard Event Handling in JavaFX

JavaFX তে কিবোর্ড ইভেন্টের জন্য সাধারণত নিম্নলিখিত ইভেন্টগুলি ব্যবহৃত হয়:

  • Key Pressed: যখন ইউজার কিবোর্ডে কোনো কী প্রেস করে।
  • Key Released: যখন ইউজার কিবোর্ডের কোনো কী ছাড়ে।
  • Key Typed: যখন ইউজার কিবোর্ডে কোনো কী টাইপ করে (অক্ষর ইনপুট)।

উদাহরণ:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class KeyboardEventExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        // একটি Text এলিমেন্ট তৈরি করা
        Text text = new Text("Press any key");
        
        // Key Pressed ইভেন্ট হ্যান্ডলিং
        text.setOnKeyPressed(event -> {
            if (event.getCode() == KeyCode.ENTER) {
                System.out.println("Enter key pressed");
            } else {
                System.out.println("Key Pressed: " + event.getText());
            }
        });

        // Key Released ইভেন্ট হ্যান্ডলিং
        text.setOnKeyReleased(event -> {
            System.out.println("Key Released: " + event.getCode());
        });

        // StackPane layout তৈরি
        StackPane root = new StackPane();
        root.getChildren().add(text);

        // Scene তৈরি এবং সেট করা
        Scene scene = new Scene(root, 400, 300);
        
        // Scene এর KeyEvent সক্রিয় করা
        scene.setOnKeyPressed(event -> {
            text.setText("You pressed: " + event.getText());
        });

        primaryStage.setTitle("Keyboard Event Example");
        primaryStage.setScene(scene);
        primaryStage.show();

        // Focus text object so it can receive key events
        text.requestFocus();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

ব্যাখ্যা:

  • Key Pressed ইভেন্টে, যখন ENTER কীবোর্ডে প্রেস করা হয় তখন একটি বার্তা প্রিন্ট হবে।
  • Key Released ইভেন্টে, যখন কোনো কী ছাড়বে তখন তার কোড প্রিন্ট হবে।
  • Key Typed ইভেন্টে, যে কীটি টাইপ করা হয় সেটি প্রদর্শিত হবে।
  • text.requestFocus() ব্যবহার করা হয়েছে যাতে টেক্সট এলিমেন্টে ফোকাস থাকে এবং কিবোর্ড ইভেন্ট গ্রহণ করতে পারে।

Mouse এবং Keyboard Event একসাথে ব্যবহার করা

এখন, ধরুন আপনি একটি UI কম্পোনেন্টে (যেমন, একটি বাটন বা টেক্সট ফিল্ড) মাউস এবং কিবোর্ড ইভেন্ট একসাথে হ্যান্ডল করতে চান। এই ক্ষেত্রে, আপনি উল্লিখিত মাউস এবং কিবোর্ড ইভেন্ট একসাথে ব্যবহার করতে পারেন। উদাহরণস্বরূপ:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class MouseAndKeyboardEventsExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        // একটি বাটন তৈরি করা
        Button button = new Button("Click or Press Enter");
        
        // Mouse Click Event
        button.setOnMouseClicked(event -> {
            System.out.println("Button clicked!");
        });

        // Key Pressed Event (Enter key)
        button.setOnKeyPressed(event -> {
            if (event.getCode() == KeyCode.ENTER) {
                System.out.println("Enter key pressed while button is focused!");
            }
        });

        // StackPane layout তৈরি করা
        StackPane root = new StackPane();
        root.getChildren().add(button);

        // Scene তৈরি এবং সেট করা
        Scene scene = new Scene(root, 400, 300);
        primaryStage.setTitle("Mouse and Keyboard Events Example");
        primaryStage.setScene(scene);
        primaryStage.show();
        
        // বাটনে ফোকাস রাখা
        button.requestFocus();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

ব্যাখ্যা:

  • Mouse Click: বাটনে ক্লিক করা হলে "Button clicked!" মেসেজ প্রিন্ট হবে।
  • Key Pressed (Enter): যদি Enter কীগুলি চাপা হয় এবং বাটনটি ফোকাসে থাকে, তবে "Enter key pressed while button is focused!" মেসেজ প্রিন্ট হবে।

সারাংশ

  • Mouse Event: JavaFX তে মাউস ইভেন্ট যেমন MouseClicked, MouseEntered, MouseExited, MouseDragged ইত্যাদি ব্যবহার করা হয় ইউজার ইন্টারঅ্যাকশনের জন্য।
  • Keyboard Event: কিবোর্ড ইভেন্ট যেমন KeyPressed, KeyReleased, KeyTyped ব্যবহার করে ইউজারের কিবোর্ড ইনপুট নিয়ে অ্যাপ্লিকেশনে কাজ করা যায়।

JavaFX তে মাউস এবং কিবোর্ড ইভেন্ট ব্যবহারের মাধ্যমে আপনি আরো ইন্টারঅ্যাকটিভ এবং ব্যবহারকারী-বান্ধব অ্যাপ্লিকেশন তৈরি করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...