我有這段代碼,其中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