第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在 DefaultButton 操作之前使用 KeyPressed 事件?

如何在 DefaultButton 操作之前使用 KeyPressed 事件?

慕慕森 2021-06-01 09:58:41
我很難消費(fèi)一個(gè)onKeyPressed事件。TextField我的應(yīng)用程序中有一個(gè)允許用戶按 [ENTER] 鍵來(lái)實(shí)現(xiàn)某個(gè)功能;但是,我也為場(chǎng)景指定了一個(gè)默認(rèn)按鈕。雖然我可以成功觸發(fā)在 中按下的鍵所需的操作,但TextField始終首先執(zhí)行默認(rèn)按鈕的操作。當(dāng)用戶在TextField.請(qǐng)參閱以下 MCVE:import javafx.application.Application;import javafx.geometry.Insets;import javafx.geometry.Pos;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.control.ButtonBar;import javafx.scene.control.TextField;import javafx.scene.input.KeyCode;import javafx.scene.layout.VBox;import javafx.stage.Stage;public class Main extends Application {    public static void main(String[] args) {        launch(args);    }    @Override    public void start(Stage primaryStage) {        // Simple UI        VBox root = new VBox(10);        root.setPadding(new Insets(10));        root.setAlignment(Pos.CENTER);        // TextField        TextField textField = new TextField();        // Capture the [ENTER] key        textField.setOnKeyPressed(event -> {            if (event.getCode() == KeyCode.ENTER) {                System.out.println("-> Enter");                event.consume();            }        });        // Buttons        Button btnCancel = new Button("Cancel");        btnCancel.setCancelButton(true);        btnCancel.setOnAction(e -> {            System.out.println("-> Cancel");            primaryStage.close();        });        Button btnSave = new Button("Save");        btnSave.setDefaultButton(true);        btnSave.setOnAction(e -> {            System.out.println("-> Save");            primaryStage.close();        });        ButtonBar buttonBar = new ButtonBar();        buttonBar.getButtons().addAll(btnCancel, btnSave);        root.getChildren().addAll(textField, buttonBar);        primaryStage.setScene(new Scene(root));        primaryStage.setTitle("Consume Event");        primaryStage.show();    }}所需的行為是能夠textField輸入并按回車(chē)鍵。輸出應(yīng)僅顯示-> Enter,舞臺(tái)應(yīng)保留。但是,當(dāng)前發(fā)生的是該階段以以下輸出結(jié)束:-> Save-> Enter我event.consume()在錯(cuò)誤的地方打電話嗎?我想保持默認(rèn)按鈕不變。
查看完整描述

2 回答

?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

正如文檔所述:

Windows / Linux:默認(rèn)按鈕在獲得焦點(diǎn)時(shí)接收 ENTER 鍵。當(dāng)默認(rèn)按鈕沒(méi)有焦點(diǎn),并且焦點(diǎn)在另一個(gè) Button 控件上時(shí),按下 ENTER 鍵將被另一個(gè)非默認(rèn) Button 接收。當(dāng)焦點(diǎn)位于用戶界面的其他地方,而不是任何按鈕上時(shí),如果指定了一個(gè)按鈕,并且場(chǎng)景中沒(méi)有其他節(jié)點(diǎn)首先使用它,則默認(rèn)按鈕將接收按 ENTER 鍵。

所以我相信這是一個(gè)錯(cuò)誤。正如我在評(píng)論中所說(shuō),一種解決方法是檢查 TextField 是否在您的默認(rèn)按鈕的 setOnAction 內(nèi)具有焦點(diǎn)并在那里使用該事件,直到他們修復(fù)它。


查看完整回答
反對(duì) 回復(fù) 2021-06-02
  • 2 回答
  • 0 關(guān)注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)