PeteProgram
Mitglied
Hallo
folgendes Problem kann ich nicht lösen:
Ich habe ein JTextField und füge diesem einen KeyListener hinzu. Durch keyReleased wird ein JPopupMenu, genauer ein BasicComboPopup geöffnet. Nun würde ich gerne über dieses PopupMenu mit den Cursortasten eine Auswahl treffen, leider bekommt das PopupMenu keinen Focus und ich kann es nicht mit der Tastatur verwenden.
requestFocus() als auch requestFocusInWindow() haben sowohl im Konstruktor als auch in keysReleased() nix gebracht.
Code:
sollte übrigens nicht daran liegen, das einige Felder und der Listener static sind, weil ich den Code für diese Frage fix zusammengebaut habe und ansonsten alles "nicht-static" ist.
weiß jemand ein Lösung?
folgendes Problem kann ich nicht lösen:
Ich habe ein JTextField und füge diesem einen KeyListener hinzu. Durch keyReleased wird ein JPopupMenu, genauer ein BasicComboPopup geöffnet. Nun würde ich gerne über dieses PopupMenu mit den Cursortasten eine Auswahl treffen, leider bekommt das PopupMenu keinen Focus und ich kann es nicht mit der Tastatur verwenden.
requestFocus() als auch requestFocusInWindow() haben sowohl im Konstruktor als auch in keysReleased() nix gebracht.
Code:
Code:
package test.textfield;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.plaf.basic.BasicComboPopup;
import javax.swing.text.DefaultCaret;
public class TextFieldPopup extends BasicComboPopup {
private static String[] items = {"eins","zwei","drei","vier","fünf"};
public static JTextField jt = new JTextField(20);
public TextFieldPopup() {
super(new JComboBox(items));
}
public static void main(String[] args) {
JFrame jf = new JFrame();
jt.addKeyListener(new MyKeyListener());
jf.getContentPane().add(jt);
jf.pack();
jf.setVisible(true);
}
static class MyKeyListener implements KeyListener {
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
TextFieldPopup tfp = new TextFieldPopup();
DefaultCaret bc = (DefaultCaret)jt.getCaret();
tfp.show(jt,bc.x,bc.y);
}
}
}
sollte übrigens nicht daran liegen, das einige Felder und der Listener static sind, weil ich den Code für diese Frage fix zusammengebaut habe und ansonsten alles "nicht-static" ist.
weiß jemand ein Lösung?