Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据其他字段中的数据启用/禁用一个字段_Java - Fatal编程技术网

Java 如何根据其他字段中的数据启用/禁用一个字段

Java 如何根据其他字段中的数据启用/禁用一个字段,java,Java,我正在使用eclipse,我有两个文本字段,这样一个文本字段包含IP地址,另一个包含正常的文本条目。 当第一个文本字段包含本地系统的IP地址时,我可以在第二个文本字段中插入文本,而当IP是其他系统的IP地址时 我必须禁用第二个文本字段 My problem is when I type IP address then on every keystroke system hangs up for some seconds. 我在第一个文本字段中添加了modify Listener,用于检查是否

我正在使用eclipse,我有两个
文本字段
,这样
一个文本字段包含IP地址
,另一个
包含正常的文本条目
。 当第一个文本字段包含本地系统的IP地址时,我可以在第二个文本字段中插入文本,而当IP是其他系统的IP地址时 我必须禁用第二个文本字段

My problem is when I type IP address then on every keystroke system hangs up 
for some seconds.
我在第一个文本字段中添加了modify Listener,用于检查是否启用/禁用第二个文本字段

My problem is when I type IP address then on every keystroke system hangs up 
for some seconds.
我正在modifyText函数中使用此代码

// Here ipAdd is the value of the first Text field on which i have add Modify Listener

InetAddress addr = InetAddress.getByName(ipAdd);
byte[] ipAddr = addr.getAddress();
String ipAddrStr
        for (int i = 0; i < ipAddr.length; i++)
        {
            if (i > 0)
            {
                ipAddrStr += ".";
            }
            ipAddrStr += ipAddr[i] & 0xFF;
        }
        // ipAddrStr contains the IP address
// For finding name of local host

String ownSysName = InetAddress.getLocalHost().getHostName();
//此处ipAdd是我添加修改侦听器的第一个文本字段的值
InetAddress addr=InetAddress.getByName(ipAdd);
字节[]ipAddr=addr.getAddress();
字符串ipAddrStr
对于(int i=0;i0)
{
ipAddrStr+=”;
}
ipAddrStr+=ipAddr[i]&0xFF;
}
//ipAddrStr包含IP地址
//用于查找本地主机的名称
字符串ownSysName=InetAddress.getLocalHost().getHostName();
为什么每次击键后都会有一个拖把

请提出实现这一目标的更好方法


提前感谢。

我想它会挂起,因为您是在和
InetAddress.getLocalHost().getHostName()中执行此操作的执行时间相对较长

您应该在后台线程中执行所有花费更多时间的操作。

一些可能性:

  • 您可能正在修改listener中文本字段中的值,其中 再次调用侦听器,以此类推
  • 有些方法可能很昂贵
如果您能分析代码,那将是最好的。JVisualVM在大多数系统上都可用,可以让您快速了解情况。或者,您可以查看繁忙线程的堆栈跟踪,查看哪些方法即使在系统挂起时刷新视图后仍然存在


此外,如果您的目标是禁用其中一个文本编辑器,则无需对每个关键笔划进行评估。您可以评估可编辑性,例如,当第二个文本字段获得焦点或焦点从第一个文本字段移出时。

每次击键后,您似乎都试图获取本地计算机的主机名。您应该获取本地计算机的主机名一次,并将其隐藏在某个地方

My problem is when I type IP address then on every keystroke system hangs up 
for some seconds.
此外,在用户键入整个IP地址后(当键入的字符串与描述IP地址的正则表达式匹配时,例如,如中所述),您实际上应该只在输入的IP地址和本地主机的IP地址之间进行比较。比较每一次击键似乎都是浪费精力。你知道如果他们只输入了一个字符,那不是你要找的IP地址