[英]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.