关于JTextField获得焦点(续) to vampirelord() :怎样使控件可见,他们本身就是可见的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有效果,并且text的值也没有全选。只要将焦点切换一下,再调用requestFocus就好使了。 我的意思是:一般情况下,为了避免画面闪烁,会这样写:jpanel jp = new jpanel();jp.setvisible(false);jp.add(...);jp.add(...);...jp.setvisible(true);不过你如果再最后一句之前,就调用控件的requestfocus方法,可能会出问题。 我的panel以及别的控件都是visible的,但是requestfocus还是不起作用。是不是在初始化的时候设置好"tab"键的顺序就应该好使了,让焦点只在按钮和输入框中出现,另外问一下:怎样设置按“tab”键的顺序呢??我可以加分!! 呵呵,不要把分数看的那么重要。1,最好把你的代码发上来看看,不用太多,能说说明问题就行。2,setNextFocusableComponent()可以设定focus顺序。 其实就是一个测试程序,我只是想把焦点在对话框打开时,直接就在JTextField上,而现在,光标在JTextField上,但焦点不在,需要用鼠标点击一下,才可以进行输入。多谢帮忙!!!public class TestDialog extends com.sun.java.swing.JDialog { JPanel panel; JButton button; JTextField tf;public TestDialog() { super(); panel = new JPanel(); panel.setName("Test"); panel.setLayout(null); button = new JButton("OK"); button.setBounds(10, 10, 91, 23);//加入按钮 panel.add(button); tf = new JTextField("1234567"); tf.setBounds(10, 100, 91, 23);加入文本编辑框 panel.add(tf); setName("test"); setDefaultCloseOperation(com.sun.java.swing.WindowConstants.DISPOSE_ON_CLOSE); setSize(200, 200); setModal(true); setResizable(false); setContentPane(panel); //设置焦点??????????????????????????? tf.requestFocus(); tf.getCaret().setVisible(true); }public static void main(String[] args) { try { TestDialog d = new TestDialog(); d.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); }; }); d.setVisible(true); } catch (Throwable exception) { System.err.println("com.sun.java.swing.JDialog 的 main() 中发生异常"); exception.printStackTrace(System.out); } }} 写一连串的下面方法。public void setNextFocusableComponent(Component aComponent) 我现在发现在程序启动后,(JTextField显示之后)就可以用requestFocus获得焦点了,所以在构造函数中获取焦点不能成功。但是程序启动后在什么地方能自动调用reauestFocus函数呢? 好像在构造函数中设定焦点有点麻烦。解决方法还是有的:重载一下setVisible() public void setVisible(boolean vFlag){ super.setVisible(vFlag); if (vFlag) tf.requestFocus(); } 谢谢各位:我的问题已经解决了,只要在panel中先add textfield,启动时,焦点就在textfield中。给分了!! 我再补充一下,如果在panel中必须后add textfield,真么办?另一个方法:在第一个add的控件(可获得焦点)上加上FocusListenerexample: button.addFocusListener(new FocusListener(FocusEvent e){ public void focusGained(){ textfield.requestFocus(); } });button为画面打开时缺省获得焦点的控件 textfield为画面打开时想获得焦点的控件 多线程问题 socket.isConnected 一个算法题... 请问各位高手在linux下的java编程与windows下有什么区别? 谁有Jabber IM (即时通讯)方面的书或电子文档? 小应用程序查看器问题 Map.Entry求解! 有段源文件编译不过去(汗颜),大家帮忙看看!!!!救救我,郁闷呀! 如何设置java应用程序的风格,如java风格,和windows风格! 帮忙看个程序。 如何实现引用 Applet中汉字的显示问题
只要将焦点切换一下,再调用requestFocus就好使了。
一般情况下,为了避免画面闪烁,会这样写:
jpanel jp = new jpanel();
jp.setvisible(false);
jp.add(...);
jp.add(...);
...
jp.setvisible(true);
不过你如果再最后一句之前,就调用控件的requestfocus方法,可能会出问题。
另外问一下:怎样设置按“tab”键的顺序呢??
我可以加分!!
1,最好把你的代码发上来看看,不用太多,能说说明问题就行。
2,setNextFocusableComponent()可以设定focus顺序。
public class TestDialog extends com.sun.java.swing.JDialog {
JPanel panel;
JButton button;
JTextField tf;public TestDialog() {
super(); panel = new JPanel();
panel.setName("Test");
panel.setLayout(null); button = new JButton("OK");
button.setBounds(10, 10, 91, 23);//加入按钮
panel.add(button);
tf = new JTextField("1234567");
tf.setBounds(10, 100, 91, 23);加入文本编辑框
panel.add(tf);
setName("test");
setDefaultCloseOperation(com.sun.java.swing.WindowConstants.DISPOSE_ON_CLOSE);
setSize(200, 200);
setModal(true);
setResizable(false);
setContentPane(panel); //设置焦点???????????????????????????
tf.requestFocus();
tf.getCaret().setVisible(true);
}public static void main(String[] args) {
try {
TestDialog d = new TestDialog();
d.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
};
});
d.setVisible(true);
} catch (Throwable exception) {
System.err.println("com.sun.java.swing.JDialog 的 main() 中发生异常");
exception.printStackTrace(System.out);
}
}}
public void setNextFocusableComponent(Component aComponent)
但是程序启动后在什么地方能自动调用reauestFocus函数呢?
解决方法还是有的:重载一下setVisible()
public void setVisible(boolean vFlag){
super.setVisible(vFlag);
if (vFlag)
tf.requestFocus();
}
我的问题已经解决了,只要在panel中先add textfield,启动时,焦点就在textfield中。
给分了!!
另一个方法:在第一个add的控件(可获得焦点)上加上FocusListener
example:
button.addFocusListener(new FocusListener(FocusEvent e){
public void focusGained(){ textfield.requestFocus();
}
});
button为画面打开时缺省获得焦点的控件
textfield为画面打开时想获得焦点的控件