簡體   English   中英

從jList輸入的jTextfield

[英]jTextfield with input from jList

我有一個jTextfield,我必須從jList接受輸入。 在FocusGained屬性上,jList應該恰好出現在jTextfield的下面,並且jList應該在FocusLost屬性上消失。 我已經完成了一些編碼,但是遇到了問題。 在FocusGained屬性中,出現jList,但在單擊它之后,它轉到另一個jTextfield的后側,該字段位於前一個文本字段下方。 以下是我的代碼:

private void txtAccountFocusGained(java.awt.event.FocusEvent evt) {                                       
    jScrollPane3.setLocation(txtAccount.getX(), txtAccount.getY()+txtAccount.getHeight());
    jScrollPane3.setVisible(true);    //scrollpane associated with list
    listAccount.setVisible(true);   //listAccount is jList
}

private void listAccountMouseClicked(java.awt.event.MouseEvent evt) {                                         
    txtAccount.setText((String)listAccount.getSelectedValue());
    jScrollPane3.setVisible(false);  //scrollpane associated with list
    txtSalesLedger.requestFocus(); //it is next field
}

使用JComboBox而不是JTextField 您可以調用JComboBox.setEditable( true ) ,然后JComboBox將具有編輯器JTextField 正是您想要的,用戶可以輸入任何文本,而且可以使用箭頭圖標打開列表框。 此外,您可以通過調用JComboBox.showPopup()使列表自動顯示。 如果將焦點偵聽器添加到JComboBox的編輯器文本字段,則當用戶單擊文本字段時,還可以從此處顯示彈出窗口。 可以使用箭頭圖標關閉彈出列表。

這是一個示例代碼:

final JComboBox comboBox = new JComboBox( 
    new Object[] { "", "Item #1", "Another item", "Something else" } );

comboBox.setEditable( true );

comboBox.getEditor().getEditorComponent().addFocusListener( new FocusAdapter() {
    @Override
    public void focusGained( final FocusEvent event ) {
        comboBox.showPopup();
    }
} );

注意:組合框的第一項是一個空字符串。 我添加了該內容,以使組合框的編輯器文本字段最初不會顯示任何值。 如果您想要一個初始值,可以將其刪除。

暫無
暫無

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

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