나는이 코드를 가지고 JTextArea
이 JFrame
에 추가되었습니다. 사용자가 ↑ 키를 누를 때마다 JTextArea
의 내용을 선택해야합니다. 나는 아무것도 내가 약간 다음에 방법 keyPressed
을 변경하는 대신 경우, 키 ↑ 을 를 눌러에 선택되어 있지 않은 것을 관찰 그러나JTextArea에서 텍스트를 선택해도 선택 색상이 표시되지 않습니다.
여기 코드
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyAdapter;
public class SelectionTest extends KeyAdapter
{
final JTextArea jTextArea;
public static void main(String[] args)
{
new SelectionTest();
}
SelectionTest()
{
JFrame jFrame=new JFrame();
jFrame.setLocationRelativeTo(null);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jTextArea = new JTextArea("Test 1-2-3");
jTextArea.addKeyListener(this);
jFrame.add(jTextArea);
jFrame.pack();
jFrame.setVisible(true);
}
@Override
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() != KeyEvent.VK_UP) return;
jTextArea.selectAll();
}
}
, 그것은 작동합니다.
@Override
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() != KeyEvent.VK_UP) return;
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
jTextArea.selectAll();
}
});
}
이 동작에 대한 이유를 알고 싶습니다. 스레딩 문제입니까?
대신 KeyBindings를 사용하십시오. – StanislavL