gpt4 book ai didi

java - 将 keyEvent 应用于方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:00 25 4
gpt4 key购买 nike

我创建了这个方法:

public void comboS() {

ResultSet rset = null;
String sch = ((JTextField) ComboItemName.getEditor().getEditorComponent()).getText();
try {
rset = new JDBC.DB().getData("SELECT * FROM item_reg WHERE id LIKE '" + sch + "%';");
} catch (Exception e) {
System.out.println(e);
}
ComboItemName.removeAllItems();
try {
while (rset.next()) {
String item = rset.getString("id");
ComboItemName.addItem(item);
}
} catch (SQLException ex) {
Logger.getLogger(jfilechooser.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println(sch);
ComboItemName.setSelectedItem(null);
ComboItemName.setPopupVisible(true);
((JTextField) ComboItemName.getEditor().getEditorComponent()).setText(sch);

}

我在 JComboBox(ComboItemName) 的 actionPerformed 中调用此方法。当我键入 HDD 并按回车键时,它会显示数据库中所有硬盘的 ID。但我希望在我键入 HDD 时显示它。我认为为此,应该将 keyEvent 应用于这样的方法。

public void comboS(java.awt.event.KeyEvent evt)

但我不知道如何调用此方法以及在组合框中的位置。请为此提供一些帮助。谢谢。像这样

enter image description here

最佳答案

使用DocumentListener为此,在您的编辑器组件上,这里有一个例子:

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.JTextComponent;

public class Example extends JFrame {


public Example() {
JComboBox comboBox = new JComboBox(new String[]{"1","2"});
comboBox.setEditable(true);
((JTextComponent)comboBox.getEditor().getEditorComponent()).getDocument().addDocumentListener(new DocumentListener() {

@Override
public void removeUpdate(DocumentEvent arg0) {
validateHDD(arg0);
}

@Override
public void insertUpdate(DocumentEvent arg0) {
validateHDD(arg0);
}

@Override
public void changedUpdate(DocumentEvent arg0) {
validateHDD(arg0);
}

private void validateHDD(DocumentEvent arg0) {
try {
String text = arg0.getDocument().getText(0, arg0.getDocument().getLength());
if(text.equals("HDD")){
System.out.println("HDD entered");
//call your method here
}
} catch (BadLocationException e) {
e.printStackTrace();
}
}

});
add(comboBox);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Example frame = new Example();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}

validateHDD 验证你是否在JComboBox的编辑器中输入了HDD,如果为真则执行一些逻辑。

关于java - 将 keyEvent 应用于方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20488876/

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