JavaFXطريقة إنشاء ListView
لإختيار الألوان
المثال التالي يعلمك طريقة إنشاء ListView
لإختيار الألوان.
مثال
import javafx.scene.control.ListCell; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; // ListView هنا قمنا بإنشاء كلاس خاص يعطينا شكل مستطيل يمكن وضعه كعنصر في كائن من الكلاس public class ColorRectCell extends ListCell<String> { 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); } } }
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 { 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); } }
ستظهر لك النافذة التالية عند التشغيل.