der Fokus aus TextField JavaFX

Kann ich nicht entfernen, den Fokus von der TextField. Auf meinem Stadtplan habe ich nur eine editierbare Inhalte: Text in einer TextField. Das problem ist, dass, wie ein Benutzer eine nie entledigt sich der Fokus (weil es nichts anderes gibt, um den Fokus auf), sobald der TextField ausgerichtet ist. Ich möchte zum entfernen des Fokus von der TextField.

der Fokus aus TextField JavaFX

der Fokus aus TextField JavaFX

der Fokus aus TextField JavaFX

public class ControllerMain implements Initializable {
    private MainApp app;
    private ObservableList<UserData> data = FXCollections.observableArrayList();
    @FXML
    private Button btnAdd;
    @FXML
    public TableView<UserData> table = new TableView<>();
    @FXML
    private TableColumn<UserData, String> column1;
    @FXML
    private TableColumn<UserData, Integer> column2;
    @FXML
    private TableColumn<UserData, String> column3;
    @FXML
    private TableColumn<UserData, String> column4;
    @FXML
    private TableColumn<UserData, Integer> column5;
    @FXML
    private TextField txtSearch;

    public ControllerMain() {
    }

    public void setApp(MainApp instance) {
        this.app = instance;
    }


    @Override
    public void initialize(URL location, ResourceBundle resources) {
        String companyName = "companyName";
        column1.setCellValueFactory(new PropertyValueFactory<>(companyName));
        String phone = "phone";
        column2.setCellValueFactory(new PropertyValueFactory<>(phone));
        String address = "address";
        column3.setCellValueFactory(new PropertyValueFactory<>(address));
        String other = "other";
        column4.setCellValueFactory(new PropertyValueFactory<>(other));
        String id = "id";
        column5.setCellValueFactory(new PropertyValueFactory<>(id));
        column5.setVisible(false);
        initSearchFilter();
    }

    private void initSearchFilter() {
        txtSearch.textProperty().addListener(o -> {
            if (txtSearch.textProperty().get().isEmpty()) {
                table.setItems(data);
                return;
            }
            ObservableList<UserData> tableItems = FXCollections.observableArrayList();
            ObservableList<TableColumn<UserData, ?>> cols = table.getColumns();
            for (UserData aData : data) {
                for (TableColumn<UserData, ?> col1 : cols) {
                    String cellValue = col1.getCellData(aData).toString();
                    cellValue = cellValue.toLowerCase();
                    if (cellValue.contains(txtSearch.textProperty().get().toLowerCase())) {
                        tableItems.add(aData);
                        break;
                    }
                }
            }
            table.setItems(tableItems);
        });
    }

    @FXML
    private void handleOpenAddForm() throws IOException {
        UserData userData = new UserData();
        app.initAddForm();
        getData().add(userData);
        loadDatabaseData();
    }

    @FXML
    private void deleteHandle() {
        try (Connection con = new DBConnect().getConnected();
             PreparedStatement prep = con.prepareStatement("DELETE FROM job.job WHERE job.id = ?")) {
            UserData selectedItem = table.getSelectionModel().getSelectedItem();
            prep.setInt(1, selectedItem.getId());
            prep.execute();
            getData().remove(selectedItem);
            loadDatabaseData();
        } catch (Exception e) {
            System.err.println("Ошибка удаления: " + e.getMessage());
        }
    }

    @FXML
    private void handleOpenUpdateForm() throws IOException {
        UserData userData = table.getSelectionModel().getSelectedItem();
        app.initUpdateForm(userData);
        userData.setId(userData.idProperty().getValue());
        userData.setCompanyName(userData.companyNameProperty().getValue());
        userData.setPhone(userData.phoneProperty().getValue());
        userData.setAddress(userData.addressProperty().getValue());
        userData.setOther(userData.otherProperty().getValue());
        loadDatabaseData();
    }

    public void loadDatabaseData() {
        try (Connection con = new DBConnect().getConnected();
             PreparedStatement preparedStatement = con.prepareStatement("SELECT  * FROM job.job");
             ResultSet resultSet = preparedStatement.executeQuery()) {
            getData().clear();
            while (resultSet.next()) {
                getData().add(new UserData(
                        resultSet.getInt("id"),
                        resultSet.getString("company_name"),
                        resultSet.getInt("phone"),
                        resultSet.getString("address"),
                        resultSet.getString("other")
                ));
                table.setItems(getData());
            }

            txtSearch.setFocusTraversable(false);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Error on Building Data");
        }
    }

    private ObservableList<UserData> getData() {
        return data;
    }


}

FXML

<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0"
        prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
        fx:controller="com.mysoft.controller.ControllerMain">
 <center>
        <TableView fx:id="table" prefHeight="370.0" prefWidth="613.0" BorderPane.alignment="CENTER"
                   focusTraversable="false">
            <columns>
                <TableColumn fx:id="column1" prefWidth="139.0" text="Название компании"/>
                <TableColumn fx:id="column2" minWidth="0.0" prefWidth="85.0" text="Телефон"/>
                <TableColumn fx:id="column3" minWidth="0.0" prefWidth="217.0" text="Адрес"/>
                <TableColumn fx:id="column4" minWidth="0.0" prefWidth="156.0" text="Другое"/>
                <TableColumn fx:id="column5" minWidth="0.0" prefWidth="156.0" text="ID"/>
            </columns>
        </TableView>
    </center>
    <bottom>
        <GridPane BorderPane.alignment="CENTER">
            <columnConstraints>
                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
            </columnConstraints>
            <rowConstraints>
                <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
            </rowConstraints>
            <BorderPane.margin>
                <Insets left="30.0" right="20.0"/>
            </BorderPane.margin>
            <Button mnemonicParsing="false" prefHeight="25.0" prefWidth="170.0" text="Добавить"
                    focusTraversable="false" onAction="#handleOpenAddForm"/>
            <Button mnemonicParsing="false" prefHeight="25.0" prefWidth="170.0" text="Редактировать"
                    GridPane.columnIndex="1" focusTraversable="false" onAction="#handleOpenUpdateForm"/>
            <Button mnemonicParsing="false" prefHeight="25.0" prefWidth="170.0" text="Удалить"
                    GridPane.columnIndex="2" focusTraversable="false" onAction="#deleteHandle"/>
        </GridPane>
    </bottom>
    <top>
        <GridPane BorderPane.alignment="CENTER">
            <columnConstraints>
                <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" maxWidth="268.0" minWidth="10.0"
                                   prefWidth="259.0"/>
                <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" maxWidth="357.0" minWidth="10.0"
                                   prefWidth="321.0"/>
            </columnConstraints>
            <rowConstraints>
                <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
            </rowConstraints>
            <padding>
                <Insets left="20.0"/>
            </padding>
            <TextField prefHeight="25.0" prefWidth="206.0" promptText="Введите данные для поиска . . ."
                        fx:id="txtSearch" focusTraversable="false">
                <font>
                    <Font name="Arial Italic" size="12.0"/>
                </font>
            </TextField>
        </GridPane>
    </top>
</BorderPane>
InformationsquelleAutor D.Stifler | 2016-06-26
Schreibe einen Kommentar