gpt4 book ai didi

java - jTextfield 包含来自 jList 的输入

转载 作者:行者123 更新时间:2023-12-01 15:08:15 26 4
gpt4 key购买 nike

我有一个 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();
}
} );

注意:组合框的第一项是空字符串。我添加了这一点,以便组合框的编辑器文本字段最初不会显示任何值。当然,如果您想要初始值,您可以将其删除。

关于java - jTextfield 包含来自 jList 的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12672905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com