对swing熟悉的大侠进来看看(100分求解决方法,决不食言)

zjueman 2003-08-11 04:25:01
有一个问题,已经困扰了我好长时间,请指点。
请看下面代码:
JFrame frame=new JFrame();
JTextArea textArea=new JTextArea();
frame.add(textArea);
JWindow window=new JWindow(frame);//问题就出在这一行
JWindow.show()
textArea.requestFocus();

代码大体如上,但是当window弹出后,textArea就是不能获得焦点
如果把window的声明语句改为:JWindow window=new JWindow();即不加入frame中
则textArea可以获得焦点。但是此时有其他问题,所以我想还是要将window加入frame
那么如何才能让textArea获得焦点呢? 问题可能出在那里?

不胜感激!!!

...全文
25 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ji_jian24 2003-08-11
  • 打赏
  • 举报
回复
不熟
relive 2003-08-11
  • 打赏
  • 举报
回复
我就是那个意思,用JPopupMenu完全可以实现,干什么要用JWindow
zjueman 2003-08-11
  • 打赏
  • 举报
回复
不是的,我是做类似jbuilder中的编码智能,就是你在变量名后敲入一个点以后,系统会自动弹出可以该变量可以用的所有方法,辅助进行编码
relive 2003-08-11
  • 打赏
  • 举报
回复
我知道了,你是准备做个类似编译器的自动过滤带出功能吧??
何必用JWindow呢?
zjueman 2003-08-11
  • 打赏
  • 举报
回复
kenethd:你说的问题我考虑过,我打印过的,show后面的语句可以执行,没有问题。
relive:
你是让window动态弹出的吗? 就是在你编辑文本的过程中,某些文字激发window.show()出来
还有window不是空的,window里面有一个面板,面板上有一个包含jlist的jscrollPane,是不是和里面的东西有关系?
邓超_kennethdeng 2003-08-11
  • 打赏
  • 举报
回复
喔,谢谢指点。
relive 2003-08-11
  • 打赏
  • 举报
回复
kennethd()

你说的是Dialog,Window不会。

zjueman(老学究)

可以啊,完全没问题。

不动鼠标,中间有块灰的,但可以直接录入内容。
邓超_kennethdeng 2003-08-11
  • 打赏
  • 举报
回复
问题可能出在你设置焦点的位置,你试着将textArea.requestFocus();提到show()方法之前,这是因为,当调用了show()方法后,
swing的主线程会停止在show的地方,而不会执行show方法下面的代码,要检验也非常容易,你可以在show方法后面加上一个System.out.printn();
就会发现当界面出现时,该输出语句并没有执行。
zjueman 2003-08-11
  • 打赏
  • 举报
回复
在弹出窗口后,你可以不动鼠标,继续在textArea上编辑文本吗?
relive 2003-08-11
  • 打赏
  • 举报
回复
不明白,我这已经调试通过了
9731boy 2003-08-11
  • 打赏
  • 举报
回复
:)
zjueman 2003-08-11
  • 打赏
  • 举报
回复
这段程序不是原文,只是我模仿情景随意写的,其它错误可以不计
我已经用textArea.requestFocus去获取焦点了
我用System.println.out打印过textArea是否有焦点,打印出来的是有,但是没有光标的
还有,我设置了window窗口的位置,不会盖住光标的,就是没有光标
relive 2003-08-11
  • 打赏
  • 举报
回复
你这段程序错还不少

JFrame frame = new JFrame();
JTextArea textArea = new JTextArea();
frame.getContentPane().add(textArea);
frame.setSize(400,300);
frame.show();
JWindow window = new JWindow(frame);
window.setSize(200,100);
window.setLocation(100,100);
window.show();
textArea.requestFocus();

textArea已经得到焦点了,不过因为你把frame设为window的父窗体,所以就盖住了光标。
funking 2003-08-11
  • 打赏
  • 举报
回复
当然,弹出window后,焦点自然而然得到了window上面。
你可以再弹出window以后,再让textarea获得焦点。
huangry 2003-08-11
  • 打赏
  • 举报
回复
应该可以自己设置焦点吧?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧