JavaFX Layouts এবং UI Components হল JavaFX অ্যাপ্লিকেশনগুলির মূল অংশ, যা ইউজার ইন্টারফেস (UI) তৈরি করার জন্য ব্যবহার করা হয়। JavaFX বিভিন্ন ধরনের লেআউট এবং UI কন্ট্রোল সরবরাহ করে যা ইউজারের সাথে ইন্টারঅ্যাকশন সহজ করে এবং অ্যাপ্লিকেশনটি আরও কার্যকরী ও আকর্ষণীয় করে তোলে।
JavaFX এ Layouts হল কন্টেইনার বা কন্ট্রোল যা UI উপাদানগুলিকে নির্দিষ্টভাবে সাজানোর জন্য ব্যবহৃত হয়। বিভিন্ন ধরনের লেআউট রয়েছে, যেমন:
VBox (Vertical Box)
VBox
একটি লেআউট যা উপাদানগুলিকে অত্যন্ত উল্লম্বভাবে (vertically) সাজায়। এটি সাধারণত বাটন, টেক্সটফিল্ড, এবং লেবেল একে অপরের উপর রেখে ডিজাইন করতে ব্যবহৃত হয়।import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class VBoxExample extends Application {
@Override
public void start(Stage primaryStage) {
// VBox layout তৈরি
VBox vbox = new VBox(10); // 10 পিক্সেলের স্পেসিং
// UI উপাদান যোগ করা
vbox.getChildren().addAll(new Button("Button 1"), new Button("Button 2"), new Button("Button 3"));
// Scene তৈরি এবং সেট করা
Scene scene = new Scene(vbox, 300, 250);
primaryStage.setTitle("VBox Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
HBox (Horizontal Box)
HBox
একটি লেআউট যা উপাদানগুলিকে অত্যন্ত অনুভূমিকভাবে (horizontally) সাজায়। এটি সাধারণত টুলবার, মেনু বার, ইত্যাদি তৈরি করতে ব্যবহৃত হয়।import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public class HBoxExample extends Application {
@Override
public void start(Stage primaryStage) {
// HBox layout তৈরি
HBox hbox = new HBox(10); // 10 পিক্সেলের স্পেসিং
// UI উপাদান যোগ করা
hbox.getChildren().addAll(new Button("Button 1"), new Button("Button 2"), new Button("Button 3"));
// Scene তৈরি এবং সেট করা
Scene scene = new Scene(hbox, 300, 100);
primaryStage.setTitle("HBox Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
GridPane
GridPane
হল একটি লেআউট যা UI উপাদানগুলোকে গ্রিড ফর্ম্যাটে সাজায়। এটি সাধারণত টেবিল, ফর্ম ডিজাইন, এবং ডেটা এন্ট্রি ফরম্যাটে ব্যবহৃত হয়।import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class GridPaneExample extends Application {
@Override
public void start(Stage primaryStage) {
// GridPane layout তৈরি
GridPane grid = new GridPane();
grid.setHgap(10); // Horizontal spacing
grid.setVgap(10); // Vertical spacing
// UI উপাদান যোগ করা
grid.add(new Button("Button 1"), 0, 0); // 1st row, 1st column
grid.add(new Button("Button 2"), 1, 0); // 1st row, 2nd column
grid.add(new Button("Button 3"), 0, 1); // 2nd row, 1st column
grid.add(new Button("Button 4"), 1, 1); // 2nd row, 2nd column
// Scene তৈরি এবং সেট করা
Scene scene = new Scene(grid, 300, 200);
primaryStage.setTitle("GridPane Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
BorderPane
BorderPane
হল একটি লেআউট যা UI উপাদানগুলিকে পাঁচটি অঞ্চলে (top, left, right, bottom, center) সাজায়। এটি সাধারণত অ্যাপ্লিকেশন উইন্ডোতে মেনু বার, টুলবার, কন্টেন্ট ইত্যাদি সন্নিবেশ করার জন্য ব্যবহৃত হয়।import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class BorderPaneExample extends Application {
@Override
public void start(Stage primaryStage) {
// BorderPane layout তৈরি
BorderPane borderPane = new BorderPane();
// UI উপাদান যোগ করা
borderPane.setTop(new Button("Top"));
borderPane.setLeft(new Button("Left"));
borderPane.setRight(new Button("Right"));
borderPane.setBottom(new Button("Bottom"));
borderPane.setCenter(new Button("Center"));
// Scene তৈরি এবং সেট করা
Scene scene = new Scene(borderPane, 300, 250);
primaryStage.setTitle("BorderPane Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
StackPane
StackPane
হল একটি লেআউট যা UI উপাদানগুলোকে স্ট্যাক (stack) করে রাখে, অর্থাৎ উপাদানগুলো একটির উপরে একটির মতো সাজায়। এটি সাধারণত একাধিক UI উপাদানকে একসাথে রাখা বা ওভারলে এফেক্ট তৈরি করতে ব্যবহৃত হয়।import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class StackPaneExample extends Application {
@Override
public void start(Stage primaryStage) {
// StackPane layout তৈরি
StackPane stackPane = new StackPane();
// UI উপাদান যোগ করা
stackPane.getChildren().addAll(new Button("Click Me"));
// Scene তৈরি এবং সেট করা
Scene scene = new Scene(stackPane, 300, 250);
primaryStage.setTitle("StackPane Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
JavaFX অনেক ধরনের UI কন্ট্রোল বা উপাদান সরবরাহ করে যা অ্যাপ্লিকেশন তৈরি করার সময় ব্যবহৃত হয়। এখানে কিছু সাধারণ JavaFX UI কন্ট্রোলের উদাহরণ দেওয়া হল:
Button:
Button
ইউজারের ইন্টারঅ্যাকশন গ্রহণ করার জন্য ব্যবহৃত হয়। Button
ক্লিক করার মাধ্যমে কোনও অ্যাকশন ট্রিগার করা যায়।Button button = new Button("Click Me");
Label:
Label
একটি টেক্সট প্রদর্শন করতে ব্যবহৃত হয়। এটি ইউজারের কাছে তথ্য দেখানোর জন্য ব্যবহার করা হয়।Label label = new Label("This is a label");
TextField:
TextField
হল একটি ইনপুট ফিল্ড যা ইউজারকে টেক্সট ইনপুট করার সুযোগ দেয়।TextField textField = new TextField();
TextArea:
TextArea
একটি মাল্টি-লাইন টেক্সট ইনপুট ফিল্ড। এটি ইউজারকে বড় আকারে টেক্সট ইনপুট করার সুযোগ দেয়।TextArea textArea = new TextArea();
ComboBox:
ComboBox
হল একটি ড্রপডাউন লিস্ট যা ইউজারকে একটি নির্দিষ্ট মান নির্বাচন করার সুযোগ দেয়।ComboBox<String> comboBox = new ComboBox<>();
comboBox.getItems().addAll("Option 1", "Option 2", "Option 3");
CheckBox:
CheckBox
হল একটি বক্স যা টিক (checked) বা আনটিক (unchecked) অবস্থায় থাকতে পারে। এটি সাধারণত ছোট অপশন নির্বাচন করার জন্য ব্যবহৃত হয়।CheckBox checkBox = new CheckBox("Accept Terms and Conditions");
RadioButton:
RadioButton
হল একধরনের বাটন যেখানে শুধুমাত্র একটি বাটন নির্বাচন করা যায়। এটি সাধারণত একাধিক অপশন থেকে একটি নির্বাচন করার জন্য ব্যবহৃত হয়।RadioButton radioButton = new RadioButton("Option 1");
ListView:
ListView
একটি স্লটের মধ্যে একাধিক আইটেম দেখানোর জন্য ব্যবহৃত হয়। এটি ইউজারের জন্য একটি লিস্ট তৈরি করে যাতে সে নির্দিষ্ট আইটেম নির্বাচন করতে পারে।ListView<String> listView = new ListView<>();
TableView:
TableView
একটি টেবিল ডিসপ্লে করতে ব্যবহৃত হয়, যেখানে একাধিক কলাম এবং রো থাকতে পারে। এটি সাধারণত ডেটা প্রদর্শন এবং হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়।TableView<MyData> tableView = new TableView<>();
Slider:
Slider
একটি ইন্টারেক্টিভ কন্ট্রোল যা ইউজারকে একটি নির্দিষ্ট মানের মধ্যে স্লাইড করতে সাহায্য করে।Slider slider = new Slider(0, 100, 50); // min, max, initial value
VBox
, HBox
, GridPane
, BorderPane
, StackPane
ইত্যাদি লেআউটগুলি গ্রাফিক্যাল ইউজার ইন্টারফেস তৈরি করতে ব্যবহৃত হয়।Button
, Label
, TextField
, ComboBox
, CheckBox
ইত্যাদি) ব্যবহারকারীর সাথে যোগাযোগ এবং ইন্টারঅ্যাকশন করার জন্য প্রয়োজনীয় কন্ট্রোল এবং উপাদান প্রদান করে।JavaFX এর মাধ্যমে আপনি সহজেই আকর্ষণীয়, ইন্টারেক্টিভ এবং মাল্টি-প্ল্যাটফর্ম UI অ্যাপ্লিকেশন তৈরি করতে পারেন।
JavaFX তে Layout Managers ব্যবহৃত হয় UI উপাদানগুলির (যেমন, বাটন, লেবেল, টেক্সটফিল্ড, ইত্যাদি) সঠিক অবস্থান এবং আকার নির্ধারণ করতে। JavaFX তে বিভিন্ন ধরনের লেআউট প্যানেল আছে, যেগুলি আপনাকে আপনার অ্যাপ্লিকেশনের ইউজার ইন্টারফেস ডিজাইন করতে সাহায্য করে।
নিচে কিছু জনপ্রিয় Layout Managers যেমন HBox
, VBox
, StackPane
, BorderPane
, এবং GridPane
এর উদাহরণ দেয়া হলো:
HBox
হল একটি লেআউট প্যানেল যা উপাদানগুলোকে অনুভূমিকভাবে সাজায়।
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public class HBoxExample extends Application {
@Override
public void start(Stage primaryStage) {
Button btn1 = new Button("Button 1");
Button btn2 = new Button("Button 2");
Button btn3 = new Button("Button 3");
// HBox তৈরি
HBox hbox = new HBox(10); // 10px ব্যবধান
hbox.getChildren().addAll(btn1, btn2, btn3);
hbox.setAlignment(Pos.CENTER); // সব বোতাম সেন্টারে বসবে
Scene scene = new Scene(hbox, 300, 200);
primaryStage.setTitle("HBox Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Output:
VBox
হল একটি লেআউট প্যানেল যা উপাদানগুলোকে উল্লম্বভাবে সাজায়।
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class VBoxExample extends Application {
@Override
public void start(Stage primaryStage) {
Button btn1 = new Button("Button 1");
Button btn2 = new Button("Button 2");
Button btn3 = new Button("Button 3");
// VBox তৈরি
VBox vbox = new VBox(10); // 10px ব্যবধান
vbox.getChildren().addAll(btn1, btn2, btn3);
vbox.setAlignment(Pos.CENTER); // সব বোতাম সেন্টারে বসবে
Scene scene = new Scene(vbox, 300, 200);
primaryStage.setTitle("VBox Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Output:
StackPane
হল একটি লেআউট প্যানেল যেখানে উপাদানগুলো একে অপরের উপরে স্তরের মতো সাজানো হয়।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class StackPaneExample extends Application {
@Override
public void start(Stage primaryStage) {
Button btn1 = new Button("Button 1");
Button btn2 = new Button("Button 2");
// StackPane তৈরি
StackPane stackPane = new StackPane();
stackPane.getChildren().addAll(btn1, btn2); // btn2 btn1 এর উপর আসবে
Scene scene = new Scene(stackPane, 300, 200);
primaryStage.setTitle("StackPane Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Output:
Button 2
হবে Button 1
এর উপরে, কারণ StackPane উপাদানগুলো একে অপরের উপর স্তরের মতো সাজায়।BorderPane
হল একটি লেআউট প্যানেল যা UI উপাদানগুলিকে পাঁচটি বিভাগে বিভক্ত করে: Top, Bottom, Left, Right, এবং Center।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class BorderPaneExample extends Application {
@Override
public void start(Stage primaryStage) {
Button btnTop = new Button("Top");
Button btnBottom = new Button("Bottom");
Button btnLeft = new Button("Left");
Button btnRight = new Button("Right");
Button btnCenter = new Button("Center");
// BorderPane তৈরি
BorderPane borderPane = new BorderPane();
borderPane.setTop(btnTop);
borderPane.setBottom(btnBottom);
borderPane.setLeft(btnLeft);
borderPane.setRight(btnRight);
borderPane.setCenter(btnCenter);
Scene scene = new Scene(borderPane, 400, 300);
primaryStage.setTitle("BorderPane Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Output:
Button Top
উপরের অংশে, Button Bottom
নীচের অংশে, Button Left
বামদিকে, Button Right
ডানদিকে এবং Button Center
কেন্দ্রে থাকবে।GridPane
হল একটি লেআউট প্যানেল যা উপাদানগুলোকে একটি গ্রিডে সাজায় (যেমন টেবিলের সারি ও কলাম)।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class GridPaneExample extends Application {
@Override
public void start(Stage primaryStage) {
Button btn1 = new Button("Button 1");
Button btn2 = new Button("Button 2");
Button btn3 = new Button("Button 3");
Button btn4 = new Button("Button 4");
// GridPane তৈরি
GridPane gridPane = new GridPane();
gridPane.setHgap(10); // কলামের মধ্যে 10px ব্যবধান
gridPane.setVgap(10); // সারির মধ্যে 10px ব্যবধান
gridPane.add(btn1, 0, 0); // (Column 0, Row 0)
gridPane.add(btn2, 1, 0); // (Column 1, Row 0)
gridPane.add(btn3, 0, 1); // (Column 0, Row 1)
gridPane.add(btn4, 1, 1); // (Column 1, Row 1)
Scene scene = new Scene(gridPane, 300, 200);
primaryStage.setTitle("GridPane Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Output:
এই লেআউট ম্যানেজারগুলো ব্যবহার করে আপনি JavaFX এর মধ্যে সঠিকভাবে উপাদানগুলি সজ্জিত করতে পারবেন এবং আধুনিক, আকর্ষণীয় GUI তৈরি করতে সক্ষম হবেন।
JavaFX হল একটি শক্তিশালী GUI ফ্রেমওয়ার্ক যা ডেস্কটপ অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। JavaFX এ বিভিন্ন ধরনের UI Components (ইউজার ইন্টারফেস উপাদান) রয়েছে যা আপনি আপনার অ্যাপ্লিকেশনে ব্যবহার করতে পারেন। এখানে কিছু গুরুত্বপূর্ণ UI কম্পোনেন্টের উদাহরণ দেওয়া হল:
একটি বাটন UI উপাদান যা ব্যবহারকারীকে ইন্টারঅ্যাক্ট করতে সক্ষম করে। আপনি একটি বাটনে ক্লিক করলে নির্দিষ্ট কোনো কাজ সম্পাদন করতে পারেন।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ButtonExample extends Application {
@Override
public void start(Stage primaryStage) {
// বাটন তৈরি করা
Button btn = new Button("Click Me");
// বাটনে ক্লিক করলে একটি বার্তা প্রদর্শন করা
btn.setOnAction(event -> System.out.println("Button clicked!"));
// StackPane layout এ বাটন যোগ করা
StackPane root = new StackPane();
root.getChildren().add(btn);
// Scene তৈরি করা এবং সেট করা
Scene scene = new Scene(root, 300, 200);
// স্টেজের টাইটেল এবং Scene সেট করা
primaryStage.setTitle("Button Example");
primaryStage.setScene(scene);
// স্টেজ প্রদর্শন করা
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
একটি লেবেল হল একটি স্ট্যাটিক টেক্সট উপাদান যা ব্যবহারকারীকে কোনো তথ্য প্রদর্শন করতে সাহায্য করে।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class LabelExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি লেবেল তৈরি করা
Label label = new Label("Hello, JavaFX!");
// StackPane layout এ লেবেল যোগ করা
StackPane root = new StackPane();
root.getChildren().add(label);
// Scene তৈরি করা এবং সেট করা
Scene scene = new Scene(root, 300, 200);
// স্টেজের টাইটেল এবং Scene সেট করা
primaryStage.setTitle("Label Example");
primaryStage.setScene(scene);
// স্টেজ প্রদর্শন করা
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
এটি একটি ইনপুট ফিল্ড যা ব্যবহারকারীদের টেক্সট ইনপুট দিতে সাহায্য করে। এটি সাধারণত নাম, ইমেইল অথবা অন্যান্য তথ্য ইনপুট নেওয়ার জন্য ব্যবহৃত হয়।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class TextFieldExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি টেক্সটফিল্ড তৈরি করা
TextField textField = new TextField();
textField.setPromptText("Enter your name");
// StackPane layout এ টেক্সটফিল্ড যোগ করা
StackPane root = new StackPane();
root.getChildren().add(textField);
// Scene তৈরি করা এবং সেট করা
Scene scene = new Scene(root, 300, 200);
// স্টেজের টাইটেল এবং Scene সেট করা
primaryStage.setTitle("TextField Example");
primaryStage.setScene(scene);
// স্টেজ প্রদর্শন করা
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
TextArea হল একটি মাল্টি-লাইন টেক্সট ইনপুট ফিল্ড যা বড় টেক্সট বা বার্তা ইনপুটের জন্য ব্যবহৃত হয়।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class TextAreaExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি টেক্সটএ্রিয়া তৈরি করা
TextArea textArea = new TextArea();
textArea.setPromptText("Enter your message");
// StackPane layout এ টেক্সটএ্রিয়া যোগ করা
StackPane root = new StackPane();
root.getChildren().add(textArea);
// Scene তৈরি করা এবং সেট করা
Scene scene = new Scene(root, 300, 200);
// স্টেজের টাইটেল এবং Scene সেট করা
primaryStage.setTitle("TextArea Example");
primaryStage.setScene(scene);
// স্টেজ প্রদর্শন করা
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
CheckBox হল একটি ইন্টারেক্টিভ UI কম্পোনেন্ট যা ব্যবহারকারীকে একটি বা একাধিক বিকল্প নির্বাচন করতে দেয়। এটি সাধারণত ফর্মের চেকলিস্ট বা সিলেকশন বোর্ডে ব্যবহৃত হয়।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class CheckBoxExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি চেকবক্স তৈরি করা
CheckBox checkBox = new CheckBox("Accept Terms and Conditions");
// চেকবক্সে পরিবর্তন হলে তার স্ট্যাটাস দেখানো
checkBox.setOnAction(event -> {
if (checkBox.isSelected()) {
System.out.println("Terms accepted");
} else {
System.out.println("Terms not accepted");
}
});
// StackPane layout এ চেকবক্স যোগ করা
StackPane root = new StackPane();
root.getChildren().add(checkBox);
// Scene তৈরি করা এবং সেট করা
Scene scene = new Scene(root, 300, 200);
// স্টেজের টাইটেল এবং Scene সেট করা
primaryStage.setTitle("CheckBox Example");
primaryStage.setScene(scene);
// স্টেজ প্রদর্শন করা
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
RadioButton হল একটি UI উপাদান যা ব্যবহারকারীকে একাধিক বিকল্পের মধ্যে একটি নির্বাচন করতে দেয়। এটি সাধারণত গ্রুপে ব্যবহৃত হয় এবং শুধুমাত্র একটি বিকল্প নির্বাচিত থাকতে পারে।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class RadioButtonExample extends Application {
@Override
public void start(Stage primaryStage) {
// ToggleGroup তৈরি করা (একই গ্রুপে থাকা বাটনগুলির মধ্যে একটি বেছে নেওয়া যাবে)
ToggleGroup group = new ToggleGroup();
// রেডিও বাটন তৈরি করা
RadioButton rb1 = new RadioButton("Option 1");
rb1.setToggleGroup(group);
RadioButton rb2 = new RadioButton("Option 2");
rb2.setToggleGroup(group);
// একটি StackPane layout তৈরি এবং রেডিও বাটন যোগ করা
StackPane root = new StackPane();
root.getChildren().addAll(rb1, rb2);
// Scene তৈরি করা এবং সেট করা
Scene scene = new Scene(root, 300, 200);
// স্টেজের টাইটেল এবং Scene সেট করা
primaryStage.setTitle("RadioButton Example");
primaryStage.setScene(scene);
// স্টেজ প্রদর্শন করা
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
JavaFX একটি শক্তিশালী UI লাইব্রেরি যা ডেস্কটপ অ্যাপ্লিকেশন তৈরির জন্য বিভিন্ন ধরনের কন্ট্রোল এবং UI কম্পোনেন্ট সরবরাহ করে। উপরে দেওয়া উদাহরণগুলোতে Button, Label, TextField, TextArea, CheckBox, এবং RadioButton কন্ট্রোল ব্যবহার করে বিভিন্ন ধরনের ইন্টারঅ্যাকশন তৈরি করা হয়েছে। এই কম্পোনেন্টগুলো সহজেই কাস্টমাইজ করা যায় এবং JavaFX এর মাধ্যমে অত্যন্ত সুন্দর এবং ইন্টারেক্টিভ UI তৈরি করা সম্ভব।
JavaFX-এ Node, Parent, এবং Control হল প্রধান ক্লাস যা JavaFX ইউজার ইন্টারফেসের গঠন এবং আচরণ নির্ধারণ করে। এগুলি JavaFX-এর গুরুত্বপূর্ণ অংশ, এবং এগুলি ব্যবহার করে গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) তৈরি করা হয়। এখানে এই তিনটি ধারণার বিস্তারিত ব্যাখ্যা দেওয়া হলো:
JavaFX-এ Node হল গ্রাফিক্যাল উপাদান যা স্ক্রীনে প্রদর্শিত হয়। এটি JavaFX-এর একটি মৌলিক ক্লাস এবং সকল UI উপাদান (যেমন: বোতাম, টেক্সট, ছবি, ফর্ম, শেপ) এর ভিত্তি। Node-এর মাধ্যমে দৃশ্যমান উপাদানগুলি (UI components) তৈরি ও পরিচালনা করা হয়।
x
, y
পজিশন)।width
, height
)।import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.Node;
import javafx.scene.layout.StackPane;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
public class NodeExample extends Application {
@Override
public void start(Stage primaryStage) {
// একটি Circle তৈরি করা হচ্ছে যা Node এর একটি উদাহরণ
Circle circle = new Circle(50);
circle.setStyle("-fx-fill: blue;");
StackPane root = new StackPane();
root.getChildren().add(circle); // Circle Node-টি StackPane এর মধ্যে রাখা হচ্ছে
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX Node Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Parent হল Node
ক্লাসের একটি সাবক্লাস, যার মাধ্যমে অন্য Node-এর জন্য প্যারেন্ট কন্টেইনার (যেমন: Layouts) তৈরি করা যায়। এটি অন্যান্য Node-কে ধারণ করতে সক্ষম এবং UI উপাদানগুলির গঠন তৈরি করতে ব্যবহৃত হয়। এর মধ্যে অন্যান্য Node-কে যুক্ত করা যায়, যেমন HBox, VBox, GridPane, StackPane ইত্যাদি।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ParentExample extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button("Click Me");
// StackPane একটি Parent, যেটি Button কে ধারণ করছে
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX Parent Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Control হল Parent
ক্লাসের একটি সাবক্লাস এবং এটি সাধারণত UI উপাদানগুলি (যেমন: Buttons, Labels, Text Fields, Sliders, ComboBoxes ইত্যাদি) এর জন্য ব্যবহৃত হয়। এগুলি interactive UI components হিসেবে কাজ করে, যেগুলি ব্যবহারকারীর ইনপুট গ্রহণ করতে এবং ডেটা প্রদর্শন করতে ব্যবহৃত হয়।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ControlExample 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 = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX Control Example");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Node
এর একটি বিশেষ ধরনের ক্লাস, যা অন্যান্য Node ধারণ করতে পারে। এটি সাধারণত Layouts (যেমন: StackPane, HBox, VBox) এর জন্য ব্যবহৃত হয়।এগুলি হল JavaFX এর তিনটি প্রধান ধারণা, যা UI অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। Node, Parent, এবং Control-এর মাধ্যমে আপনি গ্রাফিক্যাল এবং ইন্টারঅ্যাকটিভ JavaFX অ্যাপ্লিকেশন তৈরি করতে পারেন।
JavaFX একটি শক্তিশালী GUI টুলকিট, যা ব্যবহারকারীদের জন্য আকর্ষণীয় এবং ইন্টারঅ্যাকটিভ ইউজার ইন্টারফেস তৈরি করতে সহায়তা করে। JavaFX-এর মধ্যে অনেক Layout এবং UI Components রয়েছে, যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারে। এই উপাদানগুলি সহজেই Styling এবং Customization করা যায়, যাতে অ্যাপ্লিকেশনটির ডিজাইন আরও আকর্ষণীয় হয়।
JavaFX-এ বিভিন্ন ধরনের Layouts রয়েছে যা আপনার UI উপাদানগুলি সঠিকভাবে সাজাতে সাহায্য করে। কিছু সাধারণ Layouts হল:
JavaFX-এর UI Components এর মধ্যে রয়েছে:
এখন, এই Layouts এবং UI Components-এর Styling এবং Customization দেখানো হবে।
এখানে একটি উদাহরণ দেয়া হচ্ছে যেখানে VBox, HBox, Button, Label, TextField ইত্যাদি UI উপাদান ব্যবহার করা হয়েছে এবং সেগুলির স্টাইলিং এবং কাস্টমাইজেশন করা হয়েছে।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class JavaFXStylingExample extends Application {
@Override
public void start(Stage primaryStage) {
// VBox Layout
VBox vbox = new VBox(10); // 10px gap between components
vbox.setStyle("-fx-background-color: lightblue; -fx-padding: 20px;");
// Label with custom style
Label label = new Label("Welcome to JavaFX!");
label.setStyle("-fx-font-size: 20px; -fx-font-weight: bold; -fx-text-fill: darkblue;");
// Button with custom style
Button button = new Button("Click Me");
button.setStyle("-fx-background-color: darkgreen; -fx-text-fill: white; -fx-font-size: 16px;");
// Add the label and button to the VBox layout
vbox.getChildren().addAll(label, button);
// Set up the scene
Scene scene = new Scene(vbox, 300, 200);
// Set up the stage
primaryStage.setTitle("JavaFX Styling and Customization");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
VBox
একটি লম্বালম্বি লেআউট যা উপাদানগুলিকে উল্লম্বভাবে সাজাতে ব্যবহৃত হয়।vbox.setStyle()
ব্যবহার করে ব্যাকগ্রাউন্ড রঙ এবং প্যাডিং নির্ধারণ করা হয়েছে।Label
এর ফন্ট সাইজ, ফন্ট ওজন এবং টেক্সটের রঙ কাস্টমাইজ করা হয়েছে।Button
এর ব্যাকগ্রাউন্ড কালার, টেক্সটের রঙ এবং ফন্ট সাইজ কাস্টমাইজ করা হয়েছে।Scene
এ vbox
নামক লেআউট ব্যবহার করে UI উপাদানগুলি প্রদর্শন করা হয়েছে।JavaFX অ্যাপ্লিকেশনগুলির স্টাইলিং CSS (Cascading Style Sheets) এর মাধ্যমে আরও সহজ এবং শক্তিশালীভাবে করা যেতে পারে। JavaFX Scene
এবং Node
-এ CSS প্রয়োগের জন্য CSS ফাইল ব্যবহার করা হয়।
JavaFXCSSExample.java
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class JavaFXCSSExample extends Application {
@Override
public void start(Stage primaryStage) {
// VBox Layout
VBox vbox = new VBox(10); // 10px gap between components
// Label and Button
Label label = new Label("Welcome to JavaFX with CSS!");
Button button = new Button("Click Me");
// Add label and button to VBox
vbox.getChildren().addAll(label, button);
// Create a Scene and apply CSS file
Scene scene = new Scene(vbox, 300, 200);
scene.getStylesheets().add(getClass().getResource("styles.css").toExternalForm());
// Set up the stage
primaryStage.setTitle("JavaFX with CSS");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
styles.css
/* styles.css */
.label {
-fx-font-size: 20px;
-fx-font-weight: bold;
-fx-text-fill: darkblue;
}
.button {
-fx-background-color: darkgreen;
-fx-text-fill: white;
-fx-font-size: 16px;
}
.vbox {
-fx-background-color: lightblue;
-fx-padding: 20px;
}
styles.css
ফাইলটি তৈরি করা হয়েছে, যেখানে Label
, Button
এবং VBox
এর জন্য স্টাইলিং নির্ধারণ করা হয়েছে।.label
, .button
, .vbox
।scene.getStylesheets().add(getClass().getResource("styles.css").toExternalForm());
— এই কোড দিয়ে আমরা CSS ফাইলটি Scene
এ প্রয়োগ করেছি।-fx-background-color
, -fx-text-fill
, -fx-font-size
-fx-font-size
, -fx-text-fill
, -fx-font-weight
-fx-background-color
, -fx-padding
, -fx-alignment
-fx-background-color
, -fx-border-color
আপনি UI উপাদানগুলির উপর ইভেন্ট হ্যান্ডলিং যোগ করতে পারেন এবং এর স্টাইলিং কাস্টমাইজ করতে পারেন।
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class JavaFXButtonEventHandling extends Application {
@Override
public void start(Stage primaryStage) {
VBox vbox = new VBox(10); // 10px gap between components
Button button = new Button("Click Me");
// Button click event
button.setOnAction(e -> button.setText("Clicked!"));
vbox.getChildren().add(button);
Scene scene = new Scene(vbox, 200, 150);
primaryStage.setTitle("Button Event Handling");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
button.setOnAction(e -> button.setText("Clicked!"));
— এটি একটি ইভেন্ট হ্যান্ডলার যা বোতামটি ক্লিক করলে টেক্সট পরিবর্তন করবে।এই উদাহরণগুলি JavaFX এর স্টাইলিং এবং কাস্টমাইজেশনের প্রাথমিক ধারণা প্রদান করে, যা আপনার JavaFX অ্যাপ্লিকেশন তৈরি এবং ডিজাইন উন্নত করতে সহায়ক।
Read more