Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:java:java_fx:kontrollok_koetese

< Java FX

JavaFX - Kontrollok kötése

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