左右键移动焦点的例子:
Set<AWTKeyStroke> set = new HashSet<>(KeyboardFocusManagergetCurrentKeyboardFocusManager()getDefaultFocusTraversalKeys(KeyboardFocusManagerBACKWARD_TRAVERSAL_KEYS));
setadd(KeyStrokegetKeyStroke("LEFT"));
KeyboardFocusManagergetCurrentKeyboardFocusManager()setDefaultFocusTraversalKeys(KeyboardFocusManagerBACKWARD_TRAVERSAL_KEYS,set);
Set<AWTKeyStroke> set2 = new HashSet<>(KeyboardFocusManagergetCurrentKeyboardFocusManager()getDefaultFocusTraversalKeys(KeyboardFocusManagerFORWARD_TRAVERSAL_KEYS));
set2add(KeyStrokegetKeyStroke("RIGHT"));
KeyboardFocusManagergetCurrentKeyboardFocusManager()setDefaultFocusTraversalKeys(KeyboardFocusManagerFORWARD_TRAVERSAL_KEYS, set2);
明白了,楼主第二个方法的做法是正确的,而且应该这样做,在JTextField中监听键盘Enter事件来时button产生按下 *** 作,或者直接调用button按下 *** 作的actionperformed方法。
对于发的截图,我估计是对方使得鼠标在输入框时将焦点变位“确定”按钮,或者整个window组件只有“确定”按钮设置焦点选中,这样enter键会按下确定,这样是不符合逻辑的,应该鼠标在哪个组件哪个组件为当前组件(即选中),估计是对方并不知道button的doClick方法(或者直接调用“确定”按钮的事件)或者习惯性那样不合理的用法。
JComboBox cbxNumbers=new JComboBox(new Integer[] {10,20,30});cbxNumbersaddItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { // 输出选项的状态(选中,取消选中)改变情况 Systemoutprintln(egetStateChange() + "\t" + egetItem()); }});
刚才写了个程序,楼主看看符合要求不
import javaxswing;
import javaxswingborder;
import javaawt;
import javaawtevent;
class TestFocus extends JFrame implements FocusListener {
JButton btn;
JTextArea text1,text2;
boolean b=true;
public TestFocus() {
btn=new JButton("切换焦点");
btnaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(b) {
//text2setRequetFocusEnabled(fasle);
text1grabFocus();
b=false;
}
else{
text2grabFocus();
b=true;
}
}
});
JPanel p1=new JPanel(new FlowLayout());
p1add(BoxcreateGlue());
p1add(btn);
p1add(BoxcreateGlue());
JPanel p2=new JPanel(new FlowLayout());
text1=new JTextArea();
text2=new JTextArea();
p2add(create(text1,"第一个文本域"));
p2add(create(text2,"第二个文本域"));
text1addFocusListener(this);
text2addFocusListener(this);
getContentPane()add(p1,"North");
getContentPane()add(p2,"Center");
setVisible(true);
setSize(200,200);
}
public static void main(String [] args) {
new TestFocus();
}
public JScrollPane create(JTextArea text,String s) {
textsetLineWrap(true);
JScrollPane jsp=new JScrollPane(text);
Border border=BorderFactorycreateLineBorder(Colorblue);
jspsetBorder(BorderFactorycreateTitledBorder(border,s,TitledBorderLEFT,TitledBorderTOP));
return jsp;
}
public void focusGained(FocusEvent e) {
JTextArea text=(JTextArea)egetSource();
if(text==text1) {
text1setText("");
text1setText("获得焦点");
}
if(text==text2) {
text2setText("");
text2setText("获得焦点");
}
}
public void focusLost(FocusEvent e) {
JTextArea text=(JTextArea)egetSource();
if(text==text1) {
text1setText("");
text1setText("失去焦点");
}
if(text==text2) {
text2setText("");
text2setText("失去焦点");
}
}
}
以上就是关于JAVA 用方向键控制按钮焦点 求例子全部的内容,包括:JAVA 用方向键控制按钮焦点 求例子、关于Java swing组件焦点的问题(我猜可能是焦点的问题) 高分求全面、java对话框上的组合框获得焦点问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)