JavaFX Layouts এবং UI Components হল JavaFX অ্যাপ্লিকেশনগুলির মূল অংশ, যা ইউজার ইন্টারফেস (UI) তৈরি করার জন্য ব্যবহার করা হয়। JavaFX বিভিন্ন ধরনের লেআউট এবং UI কন্ট্রোল সরবরাহ করে যা ইউজারের সাথে ইন্টারঅ্যাকশন সহজ করে এবং অ্যাপ্লিকেশনটি আরও কার্যকরী ও আকর্ষণীয় করে তোলে।
JavaFX Layouts
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 Components
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
সারাংশ:
- Layouts JavaFX অ্যাপ্লিকেশনগুলিতে উপাদানগুলির সজ্জা এবং অবস্থান পরিচালনা করতে ব্যবহৃত হয়।
VBox,HBox,GridPane,BorderPane,StackPaneইত্যাদি লেআউটগুলি গ্রাফিক্যাল ইউজার ইন্টারফেস তৈরি করতে ব্যবহৃত হয়। - UI Components (যেমন
Button,Label,TextField,ComboBox,CheckBoxইত্যাদি) ব্যবহারকারীর সাথে যোগাযোগ এবং ইন্টারঅ্যাকশন করার জন্য প্রয়োজনীয় কন্ট্রোল এবং উপাদান প্রদান করে।
JavaFX এর মাধ্যমে আপনি সহজেই আকর্ষণীয়, ইন্টারেক্টিভ এবং মাল্টি-প্ল্যাটফর্ম UI অ্যাপ্লিকেশন তৈরি করতে পারেন।
JavaFX তে Layout Managers ব্যবহৃত হয় UI উপাদানগুলির (যেমন, বাটন, লেবেল, টেক্সটফিল্ড, ইত্যাদি) সঠিক অবস্থান এবং আকার নির্ধারণ করতে। JavaFX তে বিভিন্ন ধরনের লেআউট প্যানেল আছে, যেগুলি আপনাকে আপনার অ্যাপ্লিকেশনের ইউজার ইন্টারফেস ডিজাইন করতে সাহায্য করে।
নিচে কিছু জনপ্রিয় Layout Managers যেমন HBox, VBox, StackPane, BorderPane, এবং GridPane এর উদাহরণ দেয়া হলো:
1. HBox (Horizontal Box)
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:
- ৩টি বাটন অনুভূমিকভাবে কেন্দ্রে বসানো থাকবে।
2. VBox (Vertical Box)
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:
- ৩টি বাটন উল্লম্বভাবে কেন্দ্রে বসানো থাকবে।
3. StackPane
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 উপাদানগুলো একে অপরের উপর স্তরের মতো সাজায়।
4. BorderPane
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কেন্দ্রে থাকবে।
5. GridPane
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:
- ৪টি বাটন গ্রিডের মধ্যে ২টি কলাম এবং ২টি সারিতে সাজানো থাকবে।
সারাংশ:
- HBox: উপাদানগুলোকে অনুভূমিকভাবে সাজায়।
- VBox: উপাদানগুলোকে উল্লম্বভাবে সাজায়।
- StackPane: উপাদানগুলো একে অপরের উপরে স্তরের মতো সাজায়।
- BorderPane: UI উপাদানগুলিকে ৫টি ভাগে ভাগ করে (Top, Bottom, Left, Right, Center)।
- GridPane: উপাদানগুলোকে গ্রিডে সাজায় (সারি ও কলাম ভিত্তিক)।
এই লেআউট ম্যানেজারগুলো ব্যবহার করে আপনি JavaFX এর মধ্যে সঠিকভাবে উপাদানগুলি সজ্জিত করতে পারবেন এবং আধুনিক, আকর্ষণীয় GUI তৈরি করতে সক্ষম হবেন।
JavaFX হল একটি শক্তিশালী GUI ফ্রেমওয়ার্ক যা ডেস্কটপ অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। JavaFX এ বিভিন্ন ধরনের UI Components (ইউজার ইন্টারফেস উপাদান) রয়েছে যা আপনি আপনার অ্যাপ্লিকেশনে ব্যবহার করতে পারেন। এখানে কিছু গুরুত্বপূর্ণ UI কম্পোনেন্টের উদাহরণ দেওয়া হল:
1. Button (বাটন)
একটি বাটন 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);
}
}
2. Label (লেবেল)
একটি লেবেল হল একটি স্ট্যাটিক টেক্সট উপাদান যা ব্যবহারকারীকে কোনো তথ্য প্রদর্শন করতে সাহায্য করে।
উদাহরণ:
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);
}
}
3. TextField (টেক্সটফিল্ড)
এটি একটি ইনপুট ফিল্ড যা ব্যবহারকারীদের টেক্সট ইনপুট দিতে সাহায্য করে। এটি সাধারণত নাম, ইমেইল অথবা অন্যান্য তথ্য ইনপুট নেওয়ার জন্য ব্যবহৃত হয়।
উদাহরণ:
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);
}
}
4. TextArea (টেক্সট এরিয়া)
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);
}
}
5. CheckBox (চেকবক্স)
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);
}
}
6. RadioButton (রেডিও বাটন)
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) তৈরি করা হয়। এখানে এই তিনটি ধারণার বিস্তারিত ব্যাখ্যা দেওয়া হলো:
1. Node
JavaFX-এ Node হল গ্রাফিক্যাল উপাদান যা স্ক্রীনে প্রদর্শিত হয়। এটি JavaFX-এর একটি মৌলিক ক্লাস এবং সকল UI উপাদান (যেমন: বোতাম, টেক্সট, ছবি, ফর্ম, শেপ) এর ভিত্তি। Node-এর মাধ্যমে দৃশ্যমান উপাদানগুলি (UI components) তৈরি ও পরিচালনা করা হয়।
Node-এর কিছু সাধারণ বৈশিষ্ট্য:
- Positioning: Node-এর স্থান নির্ধারণ করা যায় (যেমন
x,yপজিশন)। - Size: Node-এর আকার নির্ধারণ করা যায় (যেমন
width,height)। - Transformations: Node-এ বিভিন্ন রূপান্তর (যেমন: স্কেল, রোটেশন) প্রয়োগ করা যায়।
- Style: CSS দিয়ে Node-এর স্টাইল কাস্টমাইজ করা যায়।
Node-এর কিছু সাধারণ সাবক্লাস:
- Shape: বিভিন্ন শেপ (যেমন: Circle, Rectangle, Line) তৈরি করতে ব্যবহৃত হয়।
- Text: টেক্সট উপাদান প্রদর্শন করতে ব্যবহৃত হয়।
- ImageView: চিত্র (image) প্রদর্শন করতে ব্যবহৃত হয়।
- Group: একাধিক Node একত্রিত করে একটি যৌথ গ্রুপ তৈরি করা হয়।
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);
}
}
2. Parent
Parent হল Node ক্লাসের একটি সাবক্লাস, যার মাধ্যমে অন্য Node-এর জন্য প্যারেন্ট কন্টেইনার (যেমন: Layouts) তৈরি করা যায়। এটি অন্যান্য Node-কে ধারণ করতে সক্ষম এবং UI উপাদানগুলির গঠন তৈরি করতে ব্যবহৃত হয়। এর মধ্যে অন্যান্য Node-কে যুক্ত করা যায়, যেমন HBox, VBox, GridPane, StackPane ইত্যাদি।
Parent-এর কিছু বৈশিষ্ট্য:
- Parent ক্লাসের মাধ্যমে আমরা একাধিক child Node পরিচালনা করতে পারি।
- Parent হল সাধারণত সেই কন্টেইনার যেটি একাধিক Node ধারণ করে এবং তাদের সঠিকভাবে সজ্জিত (arrange) করার জন্য ব্যবহৃত হয়।
Parent ক্লাসের কিছু সাধারণ সাবক্লাস:
- Group: একাধিক Node-কে একটি গ্রুপ হিসেবে দেখানোর জন্য ব্যবহৃত হয়।
- StackPane: Node-গুলোকে স্তরে স্তরে (stacked) সাজানোর জন্য ব্যবহৃত হয়।
- HBox, VBox: Node-গুলোকে অনুভূমিক (horizontal) অথবা উল্লম্ব (vertical)ভাবে সাজানোর জন্য ব্যবহৃত হয়।
- GridPane: একটি টেবিলের মতো Node গঠন করার জন্য ব্যবহৃত হয়, যেখানে বিভিন্ন গ্রিডের মধ্যে Node রাখা যায়।
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);
}
}
3. Control
Control হল Parent ক্লাসের একটি সাবক্লাস এবং এটি সাধারণত UI উপাদানগুলি (যেমন: Buttons, Labels, Text Fields, Sliders, ComboBoxes ইত্যাদি) এর জন্য ব্যবহৃত হয়। এগুলি interactive UI components হিসেবে কাজ করে, যেগুলি ব্যবহারকারীর ইনপুট গ্রহণ করতে এবং ডেটা প্রদর্শন করতে ব্যবহৃত হয়।
Control-এর কিছু সাধারণ বৈশিষ্ট্য:
- Interactive: Control কম্পোনেন্টগুলি ব্যবহারকারীর সাথে ইন্টারঅ্যাকশন করতে সক্ষম, যেমন ক্লিক, টাইপ, নির্বাচন ইত্যাদি।
- CSS Styling: এগুলিতে CSS এর মাধ্যমে স্টাইলিং করা যায়।
- Event Handling: Control কম্পোনেন্টে ইভেন্ট হ্যান্ডলার যোগ করা যায় (যেমন, ক্লিক ইভেন্ট, টাইপ ইভেন্ট ইত্যাদি)।
Control ক্লাসের কিছু সাধারণ সাবক্লাস:
- Button: ক্লিকযোগ্য বোতাম।
- TextField: পাঠ্য ইনপুট নেওয়ার জন্য একটি ক্ষেত্র।
- Label: টেক্সট প্রদর্শনের জন্য।
- Slider: মান নির্বাচন করার জন্য একটি স্লাইডার।
- ComboBox: একটি ড্রপডাউন তালিকা।
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);
}
}
Summary of Concepts:
- Node: JavaFX-এর সমস্ত গ্রাফিক্যাল উপাদানগুলির মূল ক্লাস। এটি হল UI উপাদানের সবচেয়ে মৌলিক ইউনিট। উদাহরণস্বরূপ, Shape, Text, ImageView এগুলি Node এর উদাহরণ।
- Parent:
Nodeএর একটি বিশেষ ধরনের ক্লাস, যা অন্যান্য Node ধারণ করতে পারে। এটি সাধারণত Layouts (যেমন: StackPane, HBox, VBox) এর জন্য ব্যবহৃত হয়। - Control: JavaFX এর UI Controls যেমন Button, TextField, ComboBox ইত্যাদি, যা ব্যবহারকারীর ইনপুট গ্রহণ করতে এবং আউটপুট প্রদর্শন করতে ব্যবহৃত হয়।
এগুলি হল JavaFX এর তিনটি প্রধান ধারণা, যা UI অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। Node, Parent, এবং Control-এর মাধ্যমে আপনি গ্রাফিক্যাল এবং ইন্টারঅ্যাকটিভ JavaFX অ্যাপ্লিকেশন তৈরি করতে পারেন।
JavaFX একটি শক্তিশালী GUI টুলকিট, যা ব্যবহারকারীদের জন্য আকর্ষণীয় এবং ইন্টারঅ্যাকটিভ ইউজার ইন্টারফেস তৈরি করতে সহায়তা করে। JavaFX-এর মধ্যে অনেক Layout এবং UI Components রয়েছে, যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারে। এই উপাদানগুলি সহজেই Styling এবং Customization করা যায়, যাতে অ্যাপ্লিকেশনটির ডিজাইন আরও আকর্ষণীয় হয়।
1. JavaFX Layouts
JavaFX-এ বিভিন্ন ধরনের Layouts রয়েছে যা আপনার UI উপাদানগুলি সঠিকভাবে সাজাতে সাহায্য করে। কিছু সাধারণ Layouts হল:
- BorderPane
- VBox
- HBox
- GridPane
- StackPane
2. JavaFX UI Components
JavaFX-এর UI Components এর মধ্যে রয়েছে:
- Button
- Label
- TextField
- ComboBox
- ListView
- CheckBox
এখন, এই Layouts এবং UI Components-এর Styling এবং Customization দেখানো হবে।
3. JavaFX Layout এবং UI Components এর Styling এবং Customization
এখানে একটি উদাহরণ দেয়া হচ্ছে যেখানে VBox, HBox, Button, Label, TextField ইত্যাদি UI উপাদান ব্যবহার করা হয়েছে এবং সেগুলির স্টাইলিং এবং কাস্টমাইজেশন করা হয়েছে।
উদাহরণ: Styling এবং Customization
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 Layout:
VBoxএকটি লম্বালম্বি লেআউট যা উপাদানগুলিকে উল্লম্বভাবে সাজাতে ব্যবহৃত হয়।- এখানে
vbox.setStyle()ব্যবহার করে ব্যাকগ্রাউন্ড রঙ এবং প্যাডিং নির্ধারণ করা হয়েছে।
- Label:
Labelএর ফন্ট সাইজ, ফন্ট ওজন এবং টেক্সটের রঙ কাস্টমাইজ করা হয়েছে।
- Button:
Buttonএর ব্যাকগ্রাউন্ড কালার, টেক্সটের রঙ এবং ফন্ট সাইজ কাস্টমাইজ করা হয়েছে।
- Scene:
Sceneএvboxনামক লেআউট ব্যবহার করে UI উপাদানগুলি প্রদর্শন করা হয়েছে।
- Stage:
- Stage হল JavaFX অ্যাপ্লিকেশনটির প্রধান উইন্ডো। এটি দৃশ্য (Scene) ধারণ করে।
4. CSS দিয়ে Styling
JavaFX অ্যাপ্লিকেশনগুলির স্টাইলিং CSS (Cascading Style Sheets) এর মাধ্যমে আরও সহজ এবং শক্তিশালীভাবে করা যেতে পারে। JavaFX Scene এবং Node-এ CSS প্রয়োগের জন্য CSS ফাইল ব্যবহার করা হয়।
উদাহরণ: CSS দিয়ে Styling
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;
}
ব্যাখ্যা:
- CSS ফাইল:
- এখানে
styles.cssফাইলটি তৈরি করা হয়েছে, যেখানেLabel,ButtonএবংVBoxএর জন্য স্টাইলিং নির্ধারণ করা হয়েছে। - CSS ক্লাসগুলির নাম JavaFX-এর UI উপাদানগুলির সাথে মিলিয়ে দেওয়া হয়েছে যেমন
.label,.button,.vbox।
- এখানে
- CSS ফাইল প্রয়োগ:
scene.getStylesheets().add(getClass().getResource("styles.css").toExternalForm());— এই কোড দিয়ে আমরা CSS ফাইলটিSceneএ প্রয়োগ করেছি।
5. UI Components Styling and Customization
- Button Styling:
-fx-background-color,-fx-text-fill,-fx-font-size - Label Styling:
-fx-font-size,-fx-text-fill,-fx-font-weight - VBox/HBox/GridPane Styling:
-fx-background-color,-fx-padding,-fx-alignment - TextField Styling:
-fx-background-color,-fx-border-color
6. Event Handling and Customization
আপনি UI উপাদানগুলির উপর ইভেন্ট হ্যান্ডলিং যোগ করতে পারেন এবং এর স্টাইলিং কাস্টমাইজ করতে পারেন।
উদাহরণ: Button Click Event
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 Layouts: VBox, HBox, GridPane এবং BorderPane ইত্যাদি লেআউট ব্যবহৃত হয় UI উপাদানগুলি সাজানোর জন্য।
- JavaFX UI Components: বিভিন্ন UI উপাদান যেমন Button, Label, TextField ইত্যাদি ব্যবহার করা হয়।
- Styling: JavaFX অ্যাপ্লিকেশনগুলির জন্য CSS ব্যবহার করে সহজে স্টাইলিং এবং কাস্টমাইজেশন করা সম্ভব।
- Customization: আপনি উপাদানগুলির আকার, রঙ, ফন্ট, প্যাডিং ইত্যাদি কাস্টমাইজ করে UI ডিজাইন উন্নত করতে পারেন।
এই উদাহরণগুলি JavaFX এর স্টাইলিং এবং কাস্টমাইজেশনের প্রাথমিক ধারণা প্রদান করে, যা আপনার JavaFX অ্যাপ্লিকেশন তৈরি এবং ডিজাইন উন্নত করতে সহায়ক।
Read more