البرمجة

JavaFX TableView with Button Column

لقد فهمت ما تحاول تحقيقه. تريد إنشاء واجهة مستخدم تحتوي على قائمة من الأزرار داخل جدول JavaFX TableView. هذا يمكن أن يتحقق بسهولة باستخدام خلية مخصصة في الجدول. فيما يلي مثال على كيفية القيام بذلك:

java
import javafx.application.Application; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.TableCell; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.stage.Stage; public class TableViewWithButton extends Application { private final ObservableList data = FXCollections.observableArrayList( new Person("John"), new Person("Jane"), new Person("Doe"), new Person("Smith") ); @Override public void start(Stage stage) { TableView tableView = new TableView<>(); TableColumn nameCol = new TableColumn<>("Name"); nameCol.setCellValueFactory(cellData -> cellData.getValue().nameProperty()); nameCol.setCellFactory(col -> new TableCell<>() { private final Button button = new Button("Click me"); @Override protected void updateItem(String item, boolean empty) { super.updateItem(item, empty); if (empty) { setGraphic(null); } else { setGraphic(button); } } }); tableView.setItems(data); tableView.getColumns().add(nameCol); Scene scene = new Scene(tableView, 300, 200); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } public static class Person { private final StringProperty name; public Person(String name) { this.name = new SimpleStringProperty(name); } public StringProperty nameProperty() { return name; } public String getName() { return name.get(); } public void setName(String name) { this.name.set(name); } } }

في هذا المثال، يتم إنشاء جدول (TableView) يحتوي على عمود واحد فقط (TableColumn) لعرض أسماء الأشخاص. تم استخدام خلية مخصصة (TableCell) لتحويل القيمة في العمود إلى زر. تظهر الخلية زرًا بدلاً من القيمة النصية للعمود، والزر يحتوي على عنوان “Click me”.

المزيد من المعلومات

بالتأكيد! في هذا المثال، تم استخدام الكلاس Person كنموذج للبيانات، حيث يحتوي على خاصية name من نوع StringProperty التي تمثل اسم الشخص. تم إنشاء جدول TableView لعرض قائمة من الأشخاص باستخدام بيانات مزودة بشكل قابل للمشاهدة (ObservableList). تم إنشاء عمود (TableColumn) بعنوان “Name” لعرض أسماء الأشخاص، وتم تعيين خاصية القيمة (CellValueFactory) لاسترجاع قيمة الاسم من كل صف في الجدول. تم استخدام خلية مخصصة (TableCell) لتحويل القيمة إلى زر، حيث يتم عرض زر “Click me” بدلاً من القيمة النصية للعمود.

يمكنك تعديل هذا المثال لتناسب احتياجاتك، مثل استخدام بيانات قاعدة البيانات لملء الجدول بدلاً من البيانات الثابتة كما في المثال، وتخصيص المزيد من الأعمدة والخصائص للزر والخلية حسب متطلبات تطبيقك.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر