JpopupMenu에 초점을 맞추면서 키보드 입력을 감지 할 수있는 방법이 있는지 알고 싶습니다. 키보드에서 입력 감지가있을 때마다 JPopupMenu에 대한 포커스를 제거합니다. 이것이 가능한가?JpopupMenu (Java)에 초점을 맞추면서 키보드 입력 감지
감사합니다.
다음은 내가 작성한 간단한 코드입니다.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import java.net.*;
import java.io.*;
public class testClass {
static JPopupMenu textPopupMenu = new JPopupMenu("MENU");
final static JTextArea textInput = new JTextArea(50,80);
final static JPanel overallPanel = new JPanel();
final static JFrame overallFrame = new JFrame("Test");
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
final ActionListener actionListener1 = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
textPopupMenu.setFocusable(false);
}
};
KeyListener textInputListener = new KeyAdapter()
{
@Override
public void keyPressed(KeyEvent e)
{
//Get the suggested words from the function and populate them to the JMenuItem
textPopupMenu = new JPopupMenu("MENU");
for(int i=0;i<5;i++)
{
switch(i)
{
case 0:
JMenuItem item1 = new JMenuItem("A");
textPopupMenu.add(item1);
break;
case 1:
JMenuItem item2 = new JMenuItem("B");
textPopupMenu.add(item2);
break;
case 2:
JMenuItem item3 = new JMenuItem("C");
textPopupMenu.add(item3);
break;
case 3:
JMenuItem item4 = new JMenuItem("D");
textPopupMenu.add(item4);
break;
case 4:
JMenuItem item5 = new JMenuItem("E");
textPopupMenu.add(item5);
break;
};
}
textPopupMenu.setFocusable(true);
if (textPopupMenu.isVisible())
{
textPopupMenu.setLocation(0, 0 + 20);
}
else
{
textPopupMenu.show(textInput,0, 0 + 20);
}
}
};
textInput.addKeyListener(textInputListener);
overallPanel.add(textInput);
overallFrame.getContentPane().add(overallPanel);
overallFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);`enter code here`
overallFrame.setSize(1000, 900);
overallFrame.setLocationRelativeTo(null);
overallFrame.setVisible(true);
}
});
}
}
'JPopupMenu'에 동일한 키 수신기를 추가 하시겠습니까? – christopher
Chris 님,이 textPopupMenu.addKeyListener (textInputListener)를 사용하여 시도했습니다. 그러나 불행히도, 초점이 맞추어 져있는 동안에는 키보드의 입력을 듣지 않을 것입니다. –
일부 코드는이 문제와 관련하여 도움이 될 수 있습니다. – christopher