簡體   English   中英

KeyListener在文本框上不起作用嗎?

[英]KeyListener Isn't working on a textbox?

我在文本輸入中添加了一個KeyListener,它似乎並沒有記錄我按下Enter的事實,因為它甚至沒有打印出文本值。 有任何想法嗎?

        txtPort.addKeyListener(new KeyAdapter() {
            public void KeyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                    System.out.println(txtName.getText());
                    System.out.println(txtAddress.getText());
                    System.out.println(txtPort.getText());
                    if(txtName.getText().equals("") && txtAddress.getText().equals("") && txtPort.getText().equals("")) {
                        String name = txtName.getText();
                        String address = txtAddress.getText();
                        int port = Integer.parseInt(txtPort.getText());

                        login(name, address, port);
                    }
                }
            }   
    }); 

不要使用KeyListener。

相反,只需將ActionListener添加到JTextField 當按下Enter鍵時,將調用ActionListener

您正在使用&(按位與)運算符。
參見https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html

您應該使用&&(邏輯AND)運算符。
參見https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

要檢查是否已填寫字符串,請使用isEmpty方法。

if (((txtName.getText() != null) && !txtName.getText().isEmpty()) &&
    ((txtAddress.getText() != null) && !txtAddress.getText().isEmpty()) &&
    ((txtPort.getText() != null) && !txtPort.getText().isEmpty()))

只需提交我的評論作為可能的答案。 更改第一行:

lblPort.addKeyListener(new KeyAdapter() {

txtPort.addKeyListener(new KeyAdapter() {

我認為您將監聽器連接到錯誤的控件,並且它永遠不會觸發。 您稍后調用txtPort.GetText() ,因此對於文本框控件而言,這似乎是正確的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM