如何从textfield中删除焦点并将其设置为按钮?

xxe27gdn  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(274)

这是一个简单的计数器gui程序,在这些程序中按右箭头计数器是递增1,但问题是每当我运行程序,然后按右箭头计数器不是递增1,但按右箭头,在文本字段中的光标从左向右移动为什么会发生这种情况?

import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class CounterDemo implements KeyListener
{
    JTextField jtf;
    JButton jb,jb1;
    int i=0;
    public CounterDemo ()
    {
        JFrame jf = new JFrame();
        jf.setBounds(100,100,400,400);
        jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        jf.setLayout(null);

        jtf = new JTextField("0");
        jtf.setBounds(60,10,50,20);
        jf.add(jtf);

        JButton jb = new JButton("next");
        JButton jb1 = new JButton("prev");
        jb.setBounds(10,35,75,20);
        jb1.setBounds(90,35,75,20);

        jf.add(jb);
        jf.add(jb1);

        jb.addKeyListener(this);
        jb1.addKeyListener(this);
        jf.setVisible(true);
    }
    public static void main(String[] args)
    {
        new CounterDemo();
    }

    public void keyPressed(KeyEvent ke)
    {
        if(ke.getKeyCode() == KeyEvent.VK_RIGHT)
        {
            i++;
            jtf.setText(" "+i);
        }
        else if (ke.getKeyCode() == KeyEvent.VK_LEFT)
        {
            i--;
            jtf.setText(" "+i);
        }
    }

    public void keyTyped(KeyEvent ke)
    {

    }

    public void keyReleased(KeyEvent ke)
    {

    }
}
xxls0lw8

xxls0lw81#

添加 jtf.setFocusable(false) 使文本字段最初不在焦点中。
编辑:正如艾布拉所说,这将使文本字段永远不会成为焦点。另一种解决办法是 jb.grabFocus() ,使按钮获得焦点,而不是文本字段。

相关问题