请教SWT中Text的setFocus方法无效问题?谢谢.

luoxiang2000 2009-07-07 10:59:23
在应用中有一个文本框,当焦点离开此文本框时,作验证,不通过就仍然放置焦点在此文本框中,但是我在focusLost函数中设置setFocus好像无效阿?那位知道是怎么回事?谢谢。
简单代码如下:

package com.swt;

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;

public class FocusDemo {
protected Shell shell;
private Text txt1;
private Text txt2;

public static void main(String[] args) {
try {
FocusDemo window = new FocusDemo();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}

public void open() {
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}

protected void createContents() {
shell = new Shell();
shell.setSize(450, 300);
shell.setText("SWT Application");
{
txt1 = new Text(shell, SWT.BORDER);
txt1.setText("Talkweb.com.cn");
txt1.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
}
@Override
public void focusLost(FocusEvent e) {
Text t = (Text)e.getSource();
t.setSelection(0, 5);
t.setFocus();
}
});
txt1.setBounds(10, 39, 97, 36);
}
{
txt2 = new Text(shell, SWT.BORDER);
txt2.setBounds(135, 39, 132, 36);
}
}
}
...全文
579 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuijiejina 2009-07-07
  • 打赏
  • 举报
回复
当你焦点移到text2上面去的时候,你就失去了text1的焦点了丫,上面选中的,都会消失的。
你的代码中只有失去焦点的动作,那获得焦点呢?是不是要切换到text1上面去啊
另:swt没有相应的包。。。不能实际运行帮你改了,见谅
luoxiang2000 2009-07-07
  • 打赏
  • 举报
回复
代码没有问题吗?您是否运行了一下?我这里运行以后,好像没有任何作用。
此代码有两个文本框,首先焦点在第一个文本框里面,然后我鼠标点入第二个文本框,本来我代码的意图是让第一个文本框中
的1-5个字符被选中,然后焦点仍然落在第一个文本框中。可是运行结果这个意图根本就没有实现???????
谢谢。
njclsc 2009-07-07
  • 打赏
  • 举报
回复
代码没问题 ,如果你要把焦点set到一个控件上最好放在相应的函数里XXX.setFocus();
你添加focus事件只是在他获得焦点后要做的动作
islandrabbit 2009-07-07
  • 打赏
  • 举报
回复
请看一下代码:

public class FocusDemo {

protected Shell shell;
private Text txt1;
private Text txt2;

public static void main(String[] args) {
try {
FocusDemo window = new FocusDemo();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}

public void open() {
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}

protected void createContents() {
shell = new Shell();
shell.setSize(450, 300);
shell.setText("SWT Application");
{
txt1 = new Text(shell, SWT.BORDER);
txt1.setText("Talkweb.com.cn");
txt1.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
}
@Override
public void focusLost(FocusEvent e) {
final Text t = (Text)e.getSource();
t.getDisplay().asyncExec (new Runnable () {
public void run () {
t.setSelection(0, 5);
t.setFocus();
}
});

}
});
txt1.setBounds(10, 39, 97, 36);
}
{
txt2 = new Text(shell, SWT.BORDER);
txt2.setBounds(135, 39, 132, 36);
}
}


}
luoxiang2000 2009-07-07
  • 打赏
  • 举报
回复
谢谢,可是还是不对,如果你能运行以下就好了。我直接在txt2的focusGained函数中加入txt1.setfocus()都不起作用。
特等奖标准成品论文(Word无水印纯净版) 硬核结构:全文包含完整的摘要、问题重述与分析、模型假设、符号说明、模型建立与求解、灵敏度分析及结论。 即插即用:排版严格遵循官方规范,逻辑严密。拿到手即可作为绝佳的高分参考模板,稍作替换与个性化润色即可极速完稿,彻底解决写论文难的痛点。 双源硬核解题代码(Python与MATLAB双版本) 拒绝假代码:提供底层逻辑清晰、模块化设计的全套可运行源码。 全流程覆盖:涵盖从前期数据清洗预处理,到期核心数学模型训练,再到后期启发式算法寻优。 傻瓜式运行:代码自带详尽的逐行文注释,并支持一键生成高质量结果可视化图表,编程小白也能轻松复现与二次开发。 全量数据与结果展示表 所有间处理数据、模型输出参数以及最终结论,均已精细整理成高质量表格。直观呈现性能评估指标与多模型对比分析,可直接作为论文正文或附件使用,极大提升学术说服力。 独家硬核思路解析 深入浅出剖析出题人意图,详细拆解每一小问的数学本质与底层逻辑,让你不仅知其然更知其所以然。 【四大核心产品优势】 高效实用:所有代码与论文均经过严格测试,确保结果精准无误、完全可复现,省去熬夜试错的时间。 全栈覆盖:从思路分析到跑出结果,再到写出高质量论文,提供一站式全流程资料矩阵。 排版辅助:资料内提供专业的论文排版一键转换工具与官方标准模板,告别格式调整的繁琐。 持续迭代:网盘直发,开赛后资料库将持续滚动更新,所有用户均可免费同步获取最新包。 【适用人群】 想要打破建模瓶颈的参赛队长与主攻手;急需高质量底层代码的编程小白;目标直指特等奖需要高分模板对标的精英团队。
内容概要:本文围绕分布式光伏储能系统的优化配置方法展开,重点基于Matlab代码实现系统建模与仿真分析,涵盖光伏出力不确定性、负荷响应特性及储能充放电行为的综合建模。通过引入改进鲸鱼优化算法、粒子群算法等智能优化算法,解决系统容量配置、能量管理策略与多目标优化调度等问题,旨在提升系统运行效率、降低能耗成本并延长设备使用寿命。研究内容还包括并网与离网模式下的经济性对比、微电网能量优化管理、储能配置方案评估,并提供完整的Matlab代码、数据集及论文撰写模板,支持科研成果的高效产出。; 适合人群:具备电力系统、新能源技术或自动化等相关专业背景,熟悉Matlab/Simulink仿真环境的研究生、科研人员及工程技术人员;特别适用于计划撰写EI/SCI期刊论文的高层次研究人员。; 使用场景及目标:①开展分布式光伏储能系统配置的科研课题与学术论文撰写;②实现微电网能量管理系统的设计与优化调度算法验证;③掌握基于Matlab的多目标优化建模方法,提升在新能源系统规划与运行领域的科研创新能力。; 阅读建议:建议结合提供的Matlab代码与Simulink模型进行动手实践,重点关注优化算法的实现逻辑与参数调优过程,按照文档目录循序渐进学习,构建完整的知识体系,并参考配套论文模板完成研究成果的规范化输出。
监控系统粘贴板和时间截的小软件(开源成世) 梅菉佬--惊屎无人知 2026-06-05 ①使用电脑,经常要用到剪贴板历史的,在windows10有系统的,但是在ubuntu24,我找不到,找第三方软件,也是各种不顺限制,有的版本变了就无法使用,又或这样那样的要求,不如干脆自已做一个自用吧。 ②先是,读出粘贴板的历史数据,主要是文本,至于非文本格式,暂不理吧,手机粘贴板历史也是如是。 ③发现,还要加上当前时间截,这个功能很小,但很实用,很多系统没有自带这功能,自已在ubuntu24加上lazarus用托盘小软件,轻松实现。 ④发现,最好加上常用的难打字,如,塘㙍的㙍字,这个字平时不容易打字出来,事先放入小软件,到时当成粘贴板历史数据取出来用就行了。又发现,一些五笔能记忆的字,也可如是,例如,逐,垂,等字。还有一些特殊符号,手机上有,电脑难找但要以显示的,例如,☆★①②③④⑤,还有,一些平时要常查但难记忆的,例如linux的命令,快捷键,也可以加入,相当于托盘记事本。。。。 ⑤还有,在ubuntu,加入到开机启动,测试顺利可用。还有,编程时,加入ini文件,可以使用时编写文本,不用每次编译源码。还有,要用分级菜单功能,暂定二级树形菜单,否则太难看了。刚开始用最简单的timer来读取粘贴板数据,后来找到别的API,不用timer了,但是,linux的API比起windows的API,似乎难找得多了。。。 于是,自产自用小工具产生了。实测可用。独乐乐不如众乐乐,于是,开源,念心经,惊S无人知,压惊也,这点小事被卡住,多么不抵。。。 //显式初始化GTK(安全调用)

62,622

社区成员

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

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