JavaFX হল একটি Java লাইব্রেরি যা গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) তৈরি করার জন্য ব্যবহৃত হয়। JavaFX এ GUI অ্যাপ্লিকেশন তৈরি করার জন্য একটি নির্দিষ্ট স্ট্রাকচার অনুসরণ করা হয়। JavaFX অ্যাপ্লিকেশন সাধারণত একটি JavaFX Application Class দিয়ে শুরু হয়, যা Application ক্লাসকে এক্সটেন্ড করে। এর মধ্যে start() মেথড থাকে যা GUI তৈরি করতে এবং দৃশ্যমান করতে ব্যবহৃত হয়।
নিচে JavaFX অ্যাপ্লিকেশন স্ট্রাকচারের একটি উদাহরণ দেওয়া হয়েছে:
JavaFX অ্যাপ্লিকেশন স্ট্রাকচার
- Main Class: এখানে অ্যাপ্লিকেশন শুরু হয়, যা
launch()মেথডকে কল করে। - Application Class: এটি GUI তৈরির জন্য
start()মেথডটি ব্যবহার করে। - Scene & Stage: JavaFX এ
Stageহল অ্যাপ্লিকেশন উইন্ডো এবংSceneহল উইন্ডোর কনটেন্ট।
JavaFX অ্যাপ্লিকেশন স্ট্রাকচার উদাহরণ
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class JavaFXExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি বাটন তৈরি
Button btn = new Button();
btn.setText("Say 'Hello World'");
// বাটনের অ্যাকশন সেট করা
btn.setOnAction(e -> System.out.println("Hello World!"));
// StackPane layout ব্যবহার
StackPane root = new StackPane();
root.getChildren().add(btn);
// Scene তৈরি এবং Stage সেট করা
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello JavaFX!");
primaryStage.setScene(scene);
// স্টেজ (উইন্ডো) দৃশ্যমান করা
primaryStage.show();
}
public static void main(String[] args) {
launch(args); // অ্যাপ্লিকেশন শুরু করা
}
}
ব্যাখ্যা:
- Main Class (JavaFXExample):
- এই ক্লাসটি
Applicationক্লাস থেকে এক্সটেন্ড করা হয়েছে। start()মেথডটি অ্যাপ্লিকেশন স্টার্ট করার জন্য ব্যবহৃত হয় এবং এতে GUI উপাদান তৈরি করা হয়।launch(args)মেথডটিmain()মেথডে কল করা হয় যা অ্যাপ্লিকেশন চালু করতে ব্যবহৃত হয়।
- এই ক্লাসটি
- start(Stage primaryStage):
primaryStageহল প্রধান উইন্ডো বা স্টেজ, যা অ্যাপ্লিকেশন চালু হওয়ার পর প্রদর্শিত হয়।- এখানে
Buttonতৈরি করা হয়েছে এবং তাকে একটিStackPaneলেআউটে রাখা হয়েছে।StackPaneএকটি সাধারণ লেআউট কন্টেইনার যা উপাদানগুলিকে স্তরে স্তরে রাখে।
- Scene:
Sceneহল উইন্ডোর কনটেন্ট, যাStackPaneএর মধ্যে রাখা হয়।Sceneএর আকার (300x250) এখানে দেওয়া হয়েছে, তবে এটি আপনার প্রয়োজন অনুযায়ী পরিবর্তন করতে পারেন।
- Stage:
primaryStage.setScene(scene)দিয়ে আমরা আমাদের তৈরি করাScene-কেStageএর মধ্যে সেট করি।- তারপর
primaryStage.show()কল করে অ্যাপ্লিকেশন উইন্ডোটি দৃশ্যমান করি।
JavaFX অ্যাপ্লিকেশন স্ট্রাকচার:
- Application Class:
start()মেথডে মূল GUI উপাদান তৈরি হয়।- GUI লেআউট, কন্ট্রোলস (যেমন বাটন, টেক্সটফিল্ড) এবং অ্যাকশন হ্যান্ডলার এখানে যুক্ত করা হয়।
- UI Components:
- JavaFX বিভিন্ন ধরণের UI উপাদান সরবরাহ করে, যেমন
Button,TextField,Label,ComboBox, ইত্যাদি।
- JavaFX বিভিন্ন ধরণের UI উপাদান সরবরাহ করে, যেমন
- Layouts:
- JavaFX বিভিন্ন লেআউট কন্টেইনার সরবরাহ করে, যেমন
VBox,HBox,StackPane,GridPane, ইত্যাদি, যা বিভিন্ন UI উপাদানগুলিকে সুন্দরভাবে সাজানোর জন্য ব্যবহৃত হয়।
- JavaFX বিভিন্ন লেআউট কন্টেইনার সরবরাহ করে, যেমন
- Event Handling:
- JavaFX ইভেন্ট হ্যান্ডলিংয়ের জন্য বিভিন্ন মেথড সরবরাহ করে। উদাহরণস্বরূপ, একটি বাটনে ক্লিক করার জন্য
setOnAction()মেথড ব্যবহার করা হয়।
- JavaFX ইভেন্ট হ্যান্ডলিংয়ের জন্য বিভিন্ন মেথড সরবরাহ করে। উদাহরণস্বরূপ, একটি বাটনে ক্লিক করার জন্য
কিছু অতিরিক্ত কনসেপ্ট:
- FXML: JavaFX এর XML ভিত্তিক কনফিগারেশন ফাইল যা GUI ডিজাইন করার জন্য ব্যবহৃত হয়। FXML দিয়ে আপনি ড্র্যাগ-এন্ড-ড্রপ UI তৈরি করতে পারেন।
- CSS Styling: JavaFX এ CSS ব্যবহার করে GUI উপাদানগুলি স্টাইল করতে পারেন।
- JavaFX Controls: বিভিন্ন কন্ট্রোল যেমন বাটন, লেবেল, টেক্সটফিল্ড ইত্যাদি JavaFX-এ ব্যবহৃত হয়।
এটি একটি সাধারণ JavaFX অ্যাপ্লিকেশন স্ট্রাকচার এবং কিভাবে একটি মৌলিক GUI তৈরি করা হয় তার একটি উদাহরণ।
JavaFX হল Java-তে GUI অ্যাপ্লিকেশন তৈরি করার জন্য একটি শক্তিশালী লাইব্রেরি। JavaFX ব্যবহার করে ডেস্কটপ অ্যাপ্লিকেশন তৈরি করা সহজ এবং এটি বিভিন্ন ধরনের UI উপাদান (যেমন বাটন, টেক্সট ফিল্ড, লেবেল, প্যানেল ইত্যাদি) সমর্থন করে। JavaFX অ্যাপ্লিকেশন তৈরি করতে হলে আপনাকে একটি Application ক্লাস তৈরি করতে হবে যা start() মেথডটি ইমপ্লিমেন্ট করবে।
JavaFX Main Application Class
এখানে একটি সাধারণ JavaFX অ্যাপ্লিকেশনের মূল ক্লাসের উদাহরণ দেওয়া হল।
1. JavaFX Main Application Example
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class MainApplication extends Application {
@Override
public void start(Stage primaryStage) {
// বাটন তৈরি করা
Button btn = new Button("Click Me!");
// বাটনে অ্যাকশন অ্যাড করা
btn.setOnAction(e -> System.out.println("Button Clicked!"));
// লেআউট তৈরি করা
StackPane root = new StackPane();
root.getChildren().add(btn);
// দৃশ্য তৈরি করা (Scene)
Scene scene = new Scene(root, 300, 250);
// স্টেজের (window) শিরোনাম সেট করা
primaryStage.setTitle("JavaFX Example");
// দৃশ্য স্টেজে সেট করা
primaryStage.setScene(scene);
// স্টেজ দেখানো
primaryStage.show();
}
public static void main(String[] args) {
launch(args); // JavaFX অ্যাপ্লিকেশন চালানো
}
}
ব্যাখ্যা:
Applicationক্লাস: JavaFX অ্যাপ্লিকেশন তৈরি করতে আপনাকেApplicationক্লাস থেকে একটি সাবক্লাস তৈরি করতে হবে। এর মধ্যেstart()মেথডটি অবশ্যই ইমপ্লিমেন্ট করতে হবে, যা UI উপাদানগুলি তৈরি এবং প্রদর্শনের জন্য ব্যবহৃত হয়।start()মেথড: এই মেথডটিStageঅবজেক্ট গ্রহণ করে, যা মূল উইন্ডোর প্রতিনিধিত্ব করে। এখানে, আমরা একটিButtonতৈরি করেছি এবং এটি একটিStackPaneলেআউটের মধ্যে রেখেছি।ButtonএবংsetOnAction: একটি বাটন তৈরি করা হয়েছে এবং এর সাথে একটি অ্যাকশন যুক্ত করা হয়েছে যাতে বাটন ক্লিক করলে একটি বার্তা কনসোলে প্রিন্ট হবে।SceneএবংStage:Sceneহল অ্যাপ্লিকেশনের মূল দৃশ্য (UI), যা মূল উইন্ডো (স্টেজ) এর মধ্যে প্রদর্শিত হবে।SceneতেStackPaneলেআউট সেট করা হয়েছে, যেখানে বাটন রাখা হয়েছে।primaryStage.show(): এই লাইনটি স্টেজ (অ্যাপ্লিকেশন উইন্ডো) দেখানোর জন্য ব্যবহার করা হয়।
2. JavaFX অ্যাপ্লিকেশনে অন্যান্য উপাদান যোগ করা
আপনি সহজেই অন্যান্য UI উপাদান যেমন TextField, Label, Slider, ComboBox ইত্যাদি JavaFX অ্যাপ্লিকেশনে যোগ করতে পারেন।
উদাহরণ: JavaFX অ্যাপ্লিকেশনে একটি লেবেল এবং টেক্সটফিল্ড যোগ করা
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
public class MainApplication extends Application {
@Override
public void start(Stage primaryStage) {
// লেবেল তৈরি করা
Label label = new Label("Enter your name:");
// টেক্সটফিল্ড তৈরি করা
TextField textField = new TextField();
// বাটন তৈরি করা
Button btn = new Button("Submit");
// বাটনের অ্যাকশন
btn.setOnAction(e -> {
String name = textField.getText();
System.out.println("Hello, " + name);
});
// লেআউট তৈরি করা
FlowPane root = new FlowPane();
root.getChildren().addAll(label, textField, btn);
// দৃশ্য তৈরি করা
Scene scene = new Scene(root, 300, 200);
// স্টেজের শিরোনাম সেট করা
primaryStage.setTitle("JavaFX TextField Example");
// দৃশ্য স্টেজে সেট করা
primaryStage.setScene(scene);
// স্টেজ দেখানো
primaryStage.show();
}
public static void main(String[] args) {
launch(args); // JavaFX অ্যাপ্লিকেশন চালানো
}
}
ব্যাখ্যা:
LabelএবংTextField: এখানে একটিLabelএবং একটিTextFieldতৈরি করা হয়েছে, যা ইউজারকে নাম ইনপুট করার সুযোগ দেয়।ButtonএবংsetOnAction: একটি বাটন তৈরি করা হয়েছে এবং এই বাটনে ক্লিক করার সময় ইউজার ইনপুট নেয় এবং কনসোলে "Hello, [name]" বার্তা প্রদর্শিত হয়।FlowPaneলেআউট: UI উপাদানগুলোকে সজ্জিত করতেFlowPaneব্যবহার করা হয়েছে, যা উপাদানগুলোকে একটি সোজা লাইনে রাখে।SceneএবংStage:Sceneতৈরি করা হয়েছে এবংStageতে সেট করা হয়েছে, যাতে অ্যাপ্লিকেশনটি প্রদর্শিত হয়।
JavaFX অ্যাপ্লিকেশন চালানোর জন্য প্রয়োজনীয় সেটআপ
JavaFX অ্যাপ্লিকেশন চালানোর জন্য আপনাকে কিছু নির্দিষ্ট সেটআপ করতে হতে পারে, বিশেষ করে যদি আপনি JDK 11 বা তার পরের সংস্করণ ব্যবহার করেন, যেহেতু JavaFX এখন আলাদা লাইব্রেরি হিসাবে আসে।
- JavaFX লাইব্রেরি অন্তর্ভুক্ত করা: JavaFX লাইব্রেরি JDK 11 বা তার পরের সংস্করণে আলাদা প্যাকেজ হিসেবে আসে, তাই আপনাকে JavaFX SDK ডাউনলোড করে আপনার প্রকল্পে এটি যুক্ত করতে হবে।
- JVM অপশন: যদি আপনি Java 11 বা তার পরের সংস্করণ ব্যবহার করেন, তাহলে আপনাকে JavaFX লাইব্রেরি চালানোর জন্য JVM অপশন হিসেবে
--module-pathএবং--add-modules javafx.controls,javafx.fxmlব্যবহার করতে হতে পারে।
javac --module-path "path/to/javafx-sdk/lib" --add-modules javafx.controls,javafx.fxml MainApplication.java
java --module-path "path/to/javafx-sdk/lib" --add-modules javafx.controls,javafx.fxml MainApplication
JavaFX হল একটি শক্তিশালী এবং অত্যন্ত ব্যবহারযোগ্য GUI লাইব্রেরি, যা Java-তে ডেস্কটপ অ্যাপ্লিকেশন তৈরি করার জন্য ব্যবহৃত হয়। Application ক্লাস এবং start() মেথড ব্যবহার করে আপনি সহজে একটি JavaFX অ্যাপ্লিকেশন তৈরি করতে পারেন এবং বিভিন্ন UI উপাদান ব্যবহার করে সুন্দর এবং ইন্টারেকটিভ অ্যাপ্লিকেশন ডিজাইন করতে পারেন।
JavaFX অ্যাপ্লিকেশনগুলির একটি নির্দিষ্ট জীবনচক্র (lifecycle) থাকে। JavaFX অ্যাপ্লিকেশনটি কার্যকরীভাবে কাজ করতে হলে এই জীবনচক্রের তিনটি প্রধান মেথড (init(), start(), এবং stop()) ব্যবহার করা হয়। প্রতিটি মেথডের একটি নির্দিষ্ট কাজ রয়েছে এবং এই মেথডগুলো নির্দিষ্ট সময়গুলিতে কল করা হয়।
JavaFX অ্যাপ্লিকেশন একটি Application ক্লাস থেকে এক্সটেন্ড করে তৈরি করা হয়, এবং এই ক্লাসটি তিনটি গুরুত্বপূর্ণ মেথড প্রদান করে:
init(): অ্যাপ্লিকেশন শুরু হওয়ার আগে একবার কল হয়।start(): অ্যাপ্লিকেশন চালু হওয়ার সময় কল হয়। এটি UI (User Interface) এবংSceneসেটআপ করতে ব্যবহৃত হয়।stop(): অ্যাপ্লিকেশন বন্ধ হওয়ার আগে একবার কল হয়। অ্যাপ্লিকেশন চলাকালীন যদি কোনও ক্লিনআপ (cleanup) করার প্রয়োজন হয়, তবে এখানে তা করা হয়।
১. init() মেথড:
init() মেথড অ্যাপ্লিকেশন শুরুর আগে একবার কল হয়। এটি মূলত অ্যাপ্লিকেশনের প্রস্তুতি নেওয়ার জন্য ব্যবহৃত হয়। তবে, এই মেথডে কিছু দীর্ঘস্থায়ী কাজ (যেমন: ডেটাবেস সংযোগ, ফাইল লোডিং) করা উচিত নয়, কারণ এটি সিঙ্ক্রোনাসভাবে কাজ করে এবং UI থ্রেডকে ব্লক করতে পারে।
কাজ:
- অ্যাপ্লিকেশন শুরুর আগে কিছু ইন্সট্যান্স ভেরিয়েবল বা কনফিগারেশন সেট করা।
- প্রস্তুতি নেওয়ার কাজ করা।
উদাহরণ:
import javafx.application.Application;
import javafx.stage.Stage;
public class JavaFXApp extends Application {
@Override
public void init() throws Exception {
System.out.println("init() মেথড কল হয়েছে!");
}
@Override
public void start(Stage primaryStage) {
System.out.println("start() মেথড কল হয়েছে!");
}
@Override
public void stop() throws Exception {
System.out.println("stop() মেথড কল হয়েছে!");
}
public static void main(String[] args) {
launch(args);
}
}
২. start() মেথড:
start() মেথড হল JavaFX অ্যাপ্লিকেশন চালু হওয়ার সময় কল হওয়া প্রধান মেথড। এখানে মূল UI উপাদান এবং Scene সেটআপ করা হয়। এই মেথডটি Stage অবজেক্ট গ্রহণ করে, যা অ্যাপ্লিকেশনের মূল উইন্ডো হিসাবে কাজ করে। সাধারণত এখানে আপনি UI উপাদান যেমন বাটন, লেবেল, টেক্সটফিল্ড, ইত্যাদি তৈরি এবং সেটআপ করেন।
কাজ:
- UI উপাদান তৈরি করা এবং সেটআপ করা।
StageএবংSceneইনিশিয়ালাইজ করা এবং দেখানো।
উদাহরণ:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class JavaFXApp extends Application {
@Override
public void start(Stage primaryStage) {
// একটি বাটন তৈরি
Button btn = new Button("Click Me");
// বাটনে ইভেন্ট হ্যান্ডলার সেট করা
btn.setOnAction(e -> System.out.println("Button clicked!"));
// লেআউট কন্টেইনার
StackPane root = new StackPane();
root.getChildren().add(btn);
// Scene তৈরি এবং সেট করা
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX Application");
primaryStage.setScene(scene);
// স্টেজ দেখানো
primaryStage.show();
}
public static void main(String[] args) {
launch(args); // অ্যাপ্লিকেশন চালু করা
}
}
৩. stop() মেথড:
stop() মেথড হল অ্যাপ্লিকেশন বন্ধ হওয়ার সময় কল হয়। এটি মূলত ক্লিনআপ বা রিসোর্স রিলিজের জন্য ব্যবহৃত হয়, যেমন ফাইল বন্ধ করা, নেটওয়ার্ক সংযোগ বন্ধ করা বা থ্রেড বন্ধ করা। stop() মেথডে দীর্ঘস্থায়ী কাজ করা উচিত নয়, কারণ এটি অ্যাপ্লিকেশন বন্ধ করার প্রক্রিয়াকে বিলম্বিত করতে পারে।
কাজ:
- অ্যাপ্লিকেশন বন্ধ হওয়ার আগে রিসোর্স মুক্ত করা।
- থ্রেড বা অন্যান্য ক্লিনআপ কাজ করা।
উদাহরণ:
import javafx.application.Application;
import javafx.stage.Stage;
public class JavaFXApp extends Application {
@Override
public void init() throws Exception {
System.out.println("init() মেথড কল হয়েছে!");
}
@Override
public void start(Stage primaryStage) {
System.out.println("start() মেথড কল হয়েছে!");
}
@Override
public void stop() throws Exception {
System.out.println("stop() মেথড কল হয়েছে! ক্লিনআপ হচ্ছে...");
// এখানে ক্লিনআপ কোড যেমন ডেটাবেস সংযোগ বন্ধ করা, ফাইল ক্লোজ করা ইত্যাদি করা যায়
}
public static void main(String[] args) {
launch(args); // অ্যাপ্লিকেশন চালু করা
}
}
JavaFX অ্যাপ্লিকেশনের জীবনচক্র:
init()মেথড:- অ্যাপ্লিকেশনটি শুরু হওয়ার আগে একবার কল হয়।
- এটি সাধারণত প্রস্তুতি নেওয়ার কাজ (যেমন ডেটা লোড করা বা কনফিগারেশন সেট করা) করে।
start()মেথড:- অ্যাপ্লিকেশন চালু হওয়ার সময় একবার কল হয়।
- এটি UI তৈরি এবং স্টেজ সেটআপের জন্য ব্যবহৃত হয়।
- এখানে মূল UI উপাদান তৈরি করা এবং
Stage/Sceneসেট করা হয়।
stop()মেথড:- অ্যাপ্লিকেশনটি বন্ধ হওয়ার আগে একবার কল হয়।
- এখানে ক্লিনআপ বা রিসোর্স রিলিজের কাজ করা হয়।
JavaFX অ্যাপ্লিকেশনের জীবনচক্রের তিনটি গুরুত্বপূর্ণ মেথড হল init(), start(), এবং stop()। init() মেথড অ্যাপ্লিকেশন শুরুর প্রস্তুতি কাজের জন্য ব্যবহৃত হয়, start() মেথড UI উপাদান তৈরি এবং স্টেজ সেটআপ করার জন্য ব্যবহৃত হয়, এবং stop() মেথড অ্যাপ্লিকেশন বন্ধ হওয়ার আগে ক্লিনআপ কার্যক্রম করার জন্য ব্যবহৃত হয়। এই মেথডগুলোকে সঠিকভাবে ব্যবহার করলে JavaFX অ্যাপ্লিকেশন উন্নত এবং দক্ষভাবে কাজ করবে।
JavaFX-এ Stage এবং Scene দুটি প্রধান উপাদান যা একটি GUI অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। এগুলি JavaFX এর ভিত্তি, যা আপনার অ্যাপ্লিকেশনের উইন্ডো এবং ভিজ্যুয়াল কন্টেন্টের কাঠামো প্রদান করে।
1. Stage:
Stage হল JavaFX অ্যাপ্লিকেশনের প্রধান উইন্ডো বা container। এটি একে অপরের সাথে সম্পর্কিত সকল দৃশ্য (Scenes) ধারণ করে এবং এটি আপনার অ্যাপ্লিকেশনের primary stage হিসেবে কাজ করে।
- Stage একটি GUI উইন্ডোর মতো, যেখানে আপনি আপনার অ্যাপ্লিকেশনের ইউজার ইন্টারফেস উপাদানগুলির সাথে ইন্টারঅ্যাক্ট করতে পারবেন।
- JavaFX অ্যাপ্লিকেশন সাধারণত primaryStage দিয়ে শুরু হয়, যা Stage ক্লাসের একটি ইনস্ট্যান্স।
- Stage এর মধ্যে একটি Scene থাকবে যা ইউজার ইন্টারফেসের উপাদান ধারণ করবে।
Stage এর কিছু প্রধান মেথড:
setTitle(String title): উইন্ডোর শিরোনাম সেট করা।setWidth(double width),setHeight(double height): উইন্ডোর আকার নির্ধারণ করা।setScene(Scene scene): স্টেজে একটি Scene সেট করা।show(): উইন্ডো দেখানো (display) করা।
Stage এর ভূমিকা:
- Primary Window: একটি অ্যাপ্লিকেশনের মেইন উইন্ডো (উদাহরণস্বরূপ, একটি ডেস্কটপ অ্যাপ্লিকেশন) হিসেবে কাজ করে।
- Window Management: এটি উইন্ডোর আকার, অবস্থান এবং দৃশ্যের (Scenes) মধ্যে টগলিং পরিচালনা করে।
2. Scene:
Scene হল JavaFX অ্যাপ্লিকেশনের ভিজ্যুয়াল কন্টেন্ট বা graphical scene graph। এটি একটি ভিউ যা আপনি স্টেজে দেখাতে চান, এবং এতে থাকবে সকল ইউজার ইন্টারফেস উপাদান (যেমন বটন, লেবেল, টেক্সটফিল্ড, প্যানেল ইত্যাদি)।
- Scene একটি container হিসেবে কাজ করে এবং এতে রাখা হয় সমস্ত Nodes (যেমন, UI components) এবং Graphics (যেমন, shapes, images, etc.)।
- একাধিক Scene থাকতে পারে, কিন্তু সাধারণত একটি Scene একাধিক Node ধারণ করে এবং স্টেজে প্রদর্শিত হয়।
Scene এর কিছু প্রধান মেথড:
setRoot(Node root): সীনের মূল উপাদান (root) সেট করা।setFill(Paint color): সীনের ব্যাকগ্রাউন্ড কালার সেট করা।setOnKeyPressed(EventHandler<KeyEvent> handler): কিবোর্ডের কি প্রেস ইভেন্ট হ্যান্ডলিং।
Scene এর ভূমিকা:
- UI Elements: এটি স্টেজের মধ্যে যে সমস্ত UI উপাদানগুলো থাকবে সেগুলি ধারণ করে, যেমন বটন, টেক্সট, লেবেল ইত্যাদি।
- Scene Graph: এটি একটি গাছের মতো কাঠামো, যেখানে প্রতিটি Node একটি UI উপাদান, এবং তার মধ্যে সম্পর্কও নির্ধারিত থাকে।
Stage এবং Scene এর সম্পর্ক:
- Stage এবং Scene একে অপরের সাথে সম্পর্কিত। Stage হল একটি উইন্ডো, এবং Scene হল সেই উইন্ডোর ভিতরের কন্টেন্ট।
- একটি Stage একাধিক Scene ধারণ করতে পারে, এবং আপনি
setScene()মেথড ব্যবহার করে সেই সীনের কন্টেন্ট পরিবর্তন করতে পারেন।
উদাহরণ:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
public class StageAndSceneExample extends Application {
@Override
public void start(Stage primaryStage) {
// Button তৈরি
Button btn = new Button("Click Me!");
// Button এর জন্য Action Event
btn.setOnAction(e -> System.out.println("Button Clicked!"));
// Scene তৈরি
Scene scene = new Scene(btn, 300, 250);
// Stage-এ Scene সেট করা
primaryStage.setTitle("JavaFX Stage and Scene Example");
primaryStage.setScene(scene); // Stage এ Scene সেট করা
primaryStage.show(); // Stage দেখানো
}
public static void main(String[] args) {
launch(args);
}
}
ব্যাখ্যা:
- Stage: এখানে
primaryStageহল আমাদের অ্যাপ্লিকেশনের মেইন উইন্ডো। আমরা স্টেজে একটি Scene সেট করেছি। - Scene:
Sceneতৈরি করা হয়েছে এবং এটি একটি Button কন্ট্রোল ধারণ করছে। এই Scene কে স্টেজে যোগ করা হয়েছে। - Button: এটি ব্যবহারকারী ইন্টারঅ্যাকশন সনাক্ত করে এবং বাটনে ক্লিক করলে একটি বার্তা কনসোলে প্রিন্ট হবে।
Output:
- একটি উইন্ডো খোলার পর, একটি বটন "Click Me!" দেখাবে।
- বটনে ক্লিক করলে কনসোলে "Button Clicked!" বার্তা প্রদর্শিত হবে।
সারাংশ:
- Stage হল JavaFX অ্যাপ্লিকেশনের উইন্ডো যা ইউজার ইন্টারফেস ধারণ করে।
- Scene হল সেই উইন্ডোর ভিজ্যুয়াল কন্টেন্ট, যেখানে UI উপাদানগুলো রাখার জন্য Node গুলো ব্যবহৃত হয়।
- Stage এবং Scene এর মধ্যে সম্পর্কের মাধ্যমে আপনি JavaFX অ্যাপ্লিকেশনের দৃশ্যপট তৈরি করেন।
JavaFX দিয়ে প্রথম অ্যাপ্লিকেশন তৈরি করার জন্য নিচে একটি সহজ উদাহরণ দেওয়া হলো যা HelloWorld অ্যাপ্লিকেশন। এই অ্যাপ্লিকেশনটি একটি বেসিক JavaFX প্রোগ্রাম হবে যা একটি উইন্ডো খুলে এবং সেখানে একটি টেক্সট প্রদর্শন করবে।
JavaFX প্রথম অ্যাপ্লিকেশন - HelloWorld
JavaFX এর জন্য প্রজেক্ট তৈরি করা:
যদি আপনি একটি IDE যেমন IntelliJ IDEA বা Eclipse ব্যবহার করেন, তাহলে JavaFX প্রজেক্ট তৈরি করতে পারেন। IntelliJ বা Eclipse সেটআপ করার পরে JavaFX লাইব্রেরি ইমপোর্ট করে একটি নতুন Java Class তৈরি করতে হবে।
এছাড়া, JavaFX 11 এবং তার পরবর্তী সংস্করণের জন্য, আপনাকে ম্যানুয়ালি JavaFX লাইব্রেরি ইনস্টল এবং কনফিগার করতে হতে পারে, যা আপনি OpenJFX ওয়েবসাইট থেকে ডাউনলোড করতে পারবেন।
- JavaFX HelloWorld Example:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
// একটি লেবেল তৈরি
Label helloWorldLabel = new Label("Hello, JavaFX World!");
// StackPane একটি লেআউট ম্যানেজার হিসেবে ব্যবহার করা
StackPane root = new StackPane();
root.getChildren().add(helloWorldLabel);
// একটি সীন তৈরি করা এবং সীনটি প্রাইমারি স্টেজে যোগ করা
Scene scene = new Scene(root, 300, 200);
// স্টেজের টাইটেল সেট করা
primaryStage.setTitle("JavaFX HelloWorld");
primaryStage.setScene(scene);
// স্টেজটি শো করা
primaryStage.show();
}
public static void main(String[] args) {
launch(args); // অ্যাপ্লিকেশন চালু করা
}
}
Code Explanation:
extends Application: JavaFX অ্যাপ্লিকেশন তৈরির জন্যApplicationক্লাসটি এক্সটেন্ড করতে হয়। এই ক্লাসটি JavaFX অ্যাপ্লিকেশন চালু করার জন্য একটিstart()মেথড প্রদান করে যা অ্যাপ্লিকেশন লঞ্চ হওয়ার সময় চলে।start()Method:- Stage: এটি একটি উইন্ডো যা আপনার অ্যাপ্লিকেশন প্রদর্শন করবে।
- Scene: এটি
Stageএর মধ্যে প্রদর্শিত গ্রাফিক্সের জন্য একটি কনটেইনার হিসেবে কাজ করে। এখানে আমরা একটি StackPane ব্যবহার করেছি যা একটি সাধারণ লেআউট ম্যানেজার। - Label: আমরা একটি
Labelতৈরি করেছি, যেখানে লেখা "Hello, JavaFX World!" দেওয়া হয়েছে।
launch(args)Method: এই মেথডটি অ্যাপ্লিকেশনটি শুরু করার জন্য ব্যবহৃত হয়। এটি JavaFX এপ্লিকেশন রান করার জন্য মূল পদ্ধতি।StackPane: এটি একটি সিম্পল লেআউট ম্যানেজার, যেখানে সব উপাদান (এখানেLabel) স্ট্যাক হয়ে একের উপর একে প্রদর্শিত হয়।
প্রোগ্রাম রান করা:
- যদি আপনি IntelliJ IDEA বা Eclipse ব্যবহার করেন, তাহলে আপনি
HelloWorld.javaক্লাসটি রান করতে পারেন। আপনি যদি ম্যানুয়ালি কম্পাইল ও রান করতে চান, তাহলে নিচের কমান্ড ব্যবহার করতে পারেন (যদি JavaFX লাইব্রেরি সঠিকভাবে ইনস্টল করা থাকে):
JavaFX 11 এবং পরবর্তী সংস্করণের জন্য Maven বা Gradle Configuration:
Maven Example: Maven ব্যবহার করলে আপনাকে pom.xml ফাইলটি এভাবে কনফিগার করতে হবে:
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>17</version> <!-- অথবা আপনার ব্যবহার করা JavaFX এর সংস্করণ -->
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.5</version>
<executions>
<execution>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Gradle Example: Gradle ব্যবহার করলে build.gradle এ এটি সংযুক্ত করুন:
plugins {
id 'org.openjfx.javafxplugin' version '0.0.10'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.openjfx:javafx-controls:17' // অথবা আপনার JavaFX এর সংস্করণ
}
javafx {
version = "17"
modules = ['javafx.controls']
}
Output:
এই প্রোগ্রামটি রান করলে একটি ছোট উইন্ডো ওপেন হবে যার মধ্যে লেখা থাকবে:
Hello, JavaFX World!
JavaFX এর প্রয়োজনীয়তা:
- Graphical User Interfaces (GUIs): JavaFX GUI অ্যাপ্লিকেশন তৈরি করার জন্য একটি শক্তিশালী ফ্রেমওয়ার্ক।
- Cross-platform support: JavaFX অ্যাপ্লিকেশনগুলি Windows, macOS এবং Linux সহ বিভিন্ন প্ল্যাটফর্মে চলতে সক্ষম।
- FXML and Scene Builder: সহজ GUI ডিজাইনের জন্য JavaFX FXML এবং Scene Builder টুল সাপোর্ট করে।
- Rich UIs: 2D এবং 3D গ্রাফিক্স, অ্যানিমেশন, ভিডিও ইত্যাদি সমর্থন করতে পারে।
এটি JavaFX দিয়ে একটি বেসিক HelloWorld অ্যাপ্লিকেশন তৈরি করার একটি উদাহরণ ছিল। JavaFX এর মাধ্যমে আপনি অনেক বেশি উন্নত এবং শক্তিশালী অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Read more