我有这段代码,其中JTextArea
被添加到JFrame
。 每当用户按↑键时,应选择JTextArea
的内容。在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();
}
}
但是我观察到,没有什么是对按↑键, ,而是如果我稍微方法keyPressed
更改为以下选定的,它的工作原理。
@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