Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

JavaFXطريقة إنشاء ListView لإختيار الألوان

المثال التالي يعلمك طريقة إنشاء ListView لإختيار الألوان.


مثال

ColorRectCell.java
import javafx.scene.control.ListCell;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
 
// ListView هنا قمنا بإنشاء كلاس خاص يعطينا شكل مستطيل يمكن وضعه كعنصر في كائن من الكلاس
public class ColorRectCell extends ListCell<String> {
 
    @Override
    public void updateItem(String item, boolean empty) {
 
        // هنا قمنا باستدعاء دالة تحديث شكل العنصر الجاهزة لأننا على أساسها سنضيف مستطيل مربع مكان العنصر
        super.updateItem(item, empty);
 
        // هنا قمنا بتحديد حجم المستطيل
        Rectangle rect = new Rectangle(122, 20);
 
        // عند ربطهما ببعض ListView هنا قمنا بتحديد أن لون المستطيل سيتم أخذه من إسم عنصر كائن
        if (item != null) {
            rect.setFill(Color.web(item));
            setGraphic(rect);
        }
        else {
            setGraphic(null);
        }
 
    }

}

Main.java
import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Stage;
 
public class Main extends Application {
 
    @Override
    public void start(Stage stage) {
 
        // هنا قمنا بإنشاء جميع الأشياء التي سنضيفها في النافذة
        Label label = new Label();
        ListView<String> listView = new ListView<>();
 
        // يمثل مجموعة العناصر التي ستظهر في القائمة ObservableList هنا قمنا بإنشاء كائن من الكلاس
        ObservableList<String> items = FXCollections.observableArrayList(
            "red", "blue", "green", "yellow", "orange", "brown", "pink", "purple", "gray", "black", "white"
        );
 
        // listView كعناصر للكائن items هنا قمنا بوضع عناصر الكائن
        listView.setItems(items);
 
        // أي إلى مستطيل لونه من إسمه ColorRectCell إلى كائن من الكلاس listView هنا قمنا بتحويل كل عنصر في الـ
        listView.setCellFactory((ListView<String> ol) -> new ColorRectCell());
 
        // هنا قمنا بتحديد حجم الأشياء التي سنضيفها في النافذة
        label.setPrefSize(200, 30);
        listView.setPrefSize(152, 250);
 
        // هنا قمنا بتحديد مكان ظهور الأشياء التي سنضيفها في النافذة
        label.setTranslateX(180);
        label.setTranslateY(110);
        listView.setTranslateX(0);
        listView.setTranslateY(0);
 
        label.setFont(new Font("Arial", 22));
 
        // في النافذة Root Node لأننا ننوي جعله الـ Group هنا قمنا بإنشاء كائن من الكلاس
        Group root = new Group();
 
        // root هنا قمنا بإضافة جميع الأشياء في الكائن
        root.getChildren().add(label);
        root.getChildren().add(listView);
 
        // فيها و تحديد حجمها Node كأول root هنا قمنا بإنشاء محتوى النافذة مع تعيين الكائن
        Scene scene = new Scene(root, 400, 250);
 
        // هنا وضعنا عنوان للنافذة
        stage.setTitle("JavaFX ListView");
 
        // أي وضعنا محتوى النافذة الذي قمنا بإنشائه للنافذة .stage في كائن الـ scene هنا وضعنا كائن الـ
        stage.setScene(scene);
 
        // هنا قمنا بإظهار النافذة
        stage.show();
 
        // listView هنا قمنا بتحديد ماذا سيحدث عند النقر على أي عنصر موجود في الـ
        listView.getSelectionModel().selectedItemProperty().addListener(
            (ObservableValue<? extends String> ov, String old_val, String new_val) -> {
            // label هنا جعلنا إسم العنصر الذي تم إختياره يوضع كنص للكائن
            label.setText(new_val);
            // label هنا جعلنا إسم العنصر الذي تم إختياره يوضع كلون خط للكائن
            label.setTextFill(Color.web(new_val));
        });
 
    }
 
    // هنا قمنا بتشغيل التطبيق
    public static void main(String[] args) {
        launch(args);
    }
 
}

ستظهر لك النافذة التالية عند التشغيل.

طريقة ListView لإختيار الألوان في javafx