Java Swing(初学者):有6个文本框竖直排列和两个按钮(bt1和bt2),默认焦点在第一个文本框上。

每单击一次bt1,焦点向下移动一次,选定下一个文本框。每单击一次bt2,焦点向上移动一次,选定上一个文本框。我的意思就是用bt1和bt2代替键盘上的上下键来控制焦点移动。... 每单击一次bt1,焦点向下移动一次,选定下一个文本框。每单击一次bt2,焦点向上移动一次,选定上一个文本框。
我的意思就是用bt1和bt2代替键盘上的上下键来控制焦点移动。
求实现方法和思路。
展开
 我来答
alsoaoq
2015-08-29 · TA获得超过488个赞
知道小有建树答主
回答量:484
采纳率:66%
帮助的人:375万
展开全部
以前写的,功能差不多,用1,2,3,4。。代替了。自己看一下吧
ctrl+1  表示选择编号为1的按钮。上下键控制位置变化

package eventDemo;

import java.awt.FlowLayout;
import java.awt.KeyEventPostProcessor;
import java.awt.KeyboardFocusManager;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class KeyEventDemo implements KeyListener{
JButton []b = new JButton[10];
int x,y;
JFrame jf;
KeyboardFocusManager manager;
public static void main(String []args){
new KeyEventDemo();
}

KeyEventDemo(){

manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();//看这里。。。。。。。。。。。。。。。改成setCurrentKeyboardFocusManager(),其他在改一下就可以了
manager.addKeyEventPostProcessor(new KeyEventPostProcessor() {

@Override
public boolean postProcessKeyEvent(KeyEvent e) {
// TODO Auto-generated method stub
if ((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) !=0){
if (e.getKeyCode()==KeyEvent.VK_1){
//System.out.println("11");
b[1].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_2){
System.out.println("11");
b[2].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_3){
System.out.println("11");
b[3].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_4){
System.out.println("11");
b[4].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_5){
System.out.println("11");
b[5].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_6){
System.out.println("11");
b[6].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_7){
System.out.println("11");
b[7].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_8){
System.out.println("11");
b[8].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_9){
System.out.println("11");
b[9].requestFocus();
}
if (e.getKeyCode()==KeyEvent.VK_0){
System.out.println("11");
b[0].requestFocus();
}

}
return false;
}
});

jf = new JFrame("KeyEventDemo");
jf.setLayout(new FlowLayout());
for (int i = 0; i <=9; i++) {
b[i] = new JButton(i+"");
jf.add(b[i]);
b[i].addKeyListener(this);
}
jf.setBounds(600,200,200,200);
jf.setVisible(true);
jf.validate();
jf.addKeyListener(new KeyListener() {

@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
if (e.getKeyCode() == KeyEvent.VK_0)
System.out.println('0');
}

@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub

}

@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub

}
});
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub

}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub

}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
JButton temp = (JButton) e.getSource();
x = temp.getBounds().x;
y = temp.getBounds().y;
//System.out.println(x*y);
if (e.getKeyCode() == KeyEvent.VK_UP)
y = y - 20;
if (e.getKeyCode() == KeyEvent.VK_DOWN)
y = y + 20;
if (e.getKeyCode() == KeyEvent.VK_RIGHT)
x = x + 20;
if (e.getKeyCode() == KeyEvent.VK_LEFT)
x = x - 20;
temp.setLocation(x, y);
}


}
匿名用户
2015-08-29
展开全部
直接在点击的时候,给那个文本框焦点
追问
我要的不是点击,而是按钮代替鼠标和键盘,让按钮来完成这些事
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式