如何从文本字段中删除焦点并将其设置在按钮上?
How to remove focus from textfield and set it on button?
这些程序中的简单计数器 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)
{
}
}
添加 jtf.setFocusable(false)
以便文本字段最初不在焦点上。
编辑:正如Abra所说,这会使文本字段永远不会成为焦点。另一种解决方案是执行类似 jb.grabFocus()
的操作,让按钮而不是文本字段获得焦点。
这些程序中的简单计数器 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)
{
}
}
添加 jtf.setFocusable(false)
以便文本字段最初不在焦点上。
编辑:正如Abra所说,这会使文本字段永远不会成为焦点。另一种解决方案是执行类似 jb.grabFocus()
的操作,让按钮而不是文本字段获得焦点。