oktatas:programozas:java:java_fx:kontrollok_koetese
Tartalomjegyzék
JavaFX - Kontrollok kötése
- Szerző: Sallai András
- Copyright © 2025, Sallai András
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
Bevezetés
Az egyes kontrollok elérhetősége, láthatósága függővé tehető egy másik kontrollokhoz képest.
Gomb kötése kiválasztott listaelemhez
A törlésgombot csak akkor legyen aktív ha ki van választva listaelem.
@FXML private Button deleteButton; @FXML private ListView<String> list1; @FXML void initialize() { list1.getItems().add("Item 1"); list1.getItems().add("Item 2"); list1.getItems().add("Item 3"); deleteButton.disableProperty() .bind(list1.getSelectionModel() .selectedItemProperty().isNull()); }
Gomb kötése táblázat soraihoz
- MainController.java
package com.example; import javafx.beans.binding.Bindings; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.cell.PropertyValueFactory; public class MainController { @FXML private TableView<Employee> table; @FXML private TableColumn<Employee, Integer> idCol; @FXML private TableColumn<Employee, String> nameCol; @FXML private Button startButton; @FXML private void initialize() { idCol.setCellValueFactory(new PropertyValueFactory<>("id")); nameCol.setCellValueFactory(new PropertyValueFactory<>("name")); ObservableList<Employee> data = FXCollections.observableArrayList(); data.add(new Employee(1, "name1")); data.add(new Employee(2, "name2")); data.add(new Employee(3, "name3")); data.add(new Employee(4, "name4")); table.setItems(data); /* Tiltjuk a gombot ha nincs kiválasztva semmi vagy ha a name értéke name3 */ startButton.disableProperty() .bind(table.getSelectionModel() .selectedItemProperty().isNull() .or( Bindings.select( table.getSelectionModel() .selectedItemProperty(), "name") .isEqualTo("name3") ) ); } @FXML void onClickStartButton(ActionEvent event) { } }
TextField kötése rádiógomb csoporthoz
A TextField csak akkor legyen látható ha a radioButton1 van kiválsztva.
@FXML private RadioButton radioButton1; @FXML private ToggleGroup radioGroup1; @FXML private TextField textField1; //... textField1.visibleProperty().bind( Bindings.equal(radioGroup1.selectedToggleProperty(), radioButton1) );
Gomb kötése boolan változóhoz
- MainController.java
import javafx.beans.property.BooleanProperty; import javafx.beans.property.SimpleBooleanProperty; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.ListView; import javafx.scene.input.MouseButton; public class Controller { @FXML private Button addButton; @FXML private ListView<String> cityListView; // A szerkesztési mód állapotát reprezentáló BooleanProperty private BooleanProperty editMode = new SimpleBooleanProperty(false); @FXML public void initialize() { // Hozzáadás gomb tiltása, ha editMode igaz addButton.disableProperty().bind(editMode); // Dupla kattintás figyelése a cityListView-n cityListView.setOnMouseClicked(event -> { if (event.getButton().equals(MouseButton.PRIMARY) && event.getClickCount() == 2) { // Ha dupla kattintás történt, beállítjuk a szerkesztési módot true-ra editMode.set(true); System.out.println("Szerkesztés mód bekapcsolva."); } }); // Szerkesztés kikapcsolás példa // someSaveButton.setOnAction(event -> editMode.set(false)); } public void exitEditMode() { editMode.set(false); System.out.println("Szerkesztés mód kikapcsolva."); // Debug üzenet } }
Gomb változóhoz és listához
Szeretnénk az editMode
változóhoz és a cityListView
listához kötni a gomb engedélyezését.
Ha szerkesztőmódban vagyunk vagy a listában nincs kijelölve semmi, akkor nem engélyezzük a gombot.
deleteButton.disableProperty().bind(editMode .or(cityListView.getSelectionModel() .selectedItemProperty().isNull()));
oktatas/programozas/java/java_fx/kontrollok_koetese.txt · Utolsó módosítás: 2025/05/22 20:52 szerkesztette: admin