【请教】如何让屏幕的输入只显示“星号”呢?
发布网友
发布时间:1天前
我来回答
共2个回答
热心网友
时间:1天前
与基于AWT或者JSwing的图形用户界面程序相比,在基于命令行的Java程序中实现密码屏蔽输入要比较麻烦一些,原因在于JDK没有提供任何基于文本的字符回显控制方法,因此需要编写相应的控制代码。基于通用性方面的考虑,在本文中将编写用于屏蔽用户输入的对象InputMasking,该对象的定义如下:
//InputMasking.java
import java.io.*;
public class InputMasking
{
String getPassword(String initial) throws IOException
{
MaskingThread listeningthread = new MaskingThread(initial);
Thread thread_instance = new Thread(listeningthread);
String password = "";
thread_instance.start();
while (true)
{
char input = (char)System.in.read();
listeningthread.stopMasking();
if (input == '\r')
{
input = (char)System.in.read();
if (input == '\n')
break;
else
continue;
}
else if(input == '\n')
break;
else
password += input;
}
return password;
}
}
该对象在后台启动线程的控制下,从系统输入设备中读取字符并对该字符进行分析。如果遇到行结束标志,则返回该线程获取的字符串对象password。读者一定会关心后台线程对象MaskingThread的作用,该线程对象周期地刷新终端窗口,其目的在于屏蔽用户输入的字符,使该字符不能够在窗口中显示出来。该线程对象的定义为:
//MaskingThread.java
import java.io.*;
class MaskingThread extends Thread
{
private boolean stop = false;
private int index;
private String initial;
public MaskingThread(String initial)
{
this.initial = initial;
}
public void run()
{
while(!stop)
{
try
{
this.sleep(1);
}
catch (InterruptedException ex)
{
ex.printStackTrace();
}
if (!stop)
{
System.out.print("\r" + initial + " \r" + initial);
}
System.out.flush();
}
}
public void stopMasking()
{
this.stop = true;
}
}
在InputMasking对象和MaskingThread对象的配合下,使得基于命令行的Java应用程序能够实现用户输入密码字符的屏蔽,其核心方法是利用后台线程时时刷新终端窗口,屏蔽用户输入字符。下面的CmdLineUtility对象即利用前面定义的两个对象进行用户输入屏蔽,请读者实际运行上述程序,以了解命令行Java程序屏蔽输入的方式:
//CmdLineUtility.java
import java.io.*;
public class CmdLineUtility
{
public static void main(String argv[])
{
InputMasking masking = new InputMasking();
String password = null;
try
{
password = masking.getPassword("请输入登录密码: ");
}
catch(IOException ex)
{
ex.printStackTrace();
}
System.out.println("您输入的密码为: " + password);
}
}
参考资料:http://linux.ccidnet.com/art/993/20030603/48548_1.html
热心网友
时间:1天前
好象密码的形式就可以了啊
【请教】如何让屏幕的输入只显示“星号”呢?
如果是可视化编程有该功能的控件,如果是其他,不同的编程语言有不同的函数哦
【请教】如何让屏幕的输入只显示“星号”呢?
该对象在后台启动线程的控制下,从系统输入设备中读取字符并对该字符进行分析。如果遇到行结束标志,则返回该线程获取的字符串对象password。读者一定会关心后台线程对象MaskingThread的作用,该线程对象周期地刷新终端窗口,其目的在于屏蔽用户输入的字符,使该字符不能够在窗口中显示出来。该线程对象的定义为:...
抖音怎么名字显示星号呢?
2、设置了用户隐藏。在抖音直播间中,如果自己的名字不显示头像只显示星号是因为设置了用户隐藏。抖音是由字节跳动孵化的一款音乐创意短视频社交软件。该软件于2016年9月20日上线,是一个面向全年龄的短视频社区平台。3、首先打开抖音app,然后在我的界面中点击右上角三条横线图标。然后选择“设置”选项...
怎么在excel中,把好多手机号码的中间几位,变成星号呢?
在Excel中,如果你需要对手机号码的中间几位进行隐私保护,使其显示为星号,操作过程相当简单。首先,启动你的Excel程序,打开包含手机号码的表格文件。接着,找到你想要开始修改的手机号所在的第一行,比如A1单元格。在A1单元格中,你可以输入一个公式来实现这一目标。具体来说,输入"=LEFT(A1,3)***...
手机收到短信验证码屏幕不显示是怎么回事
1、手机设置--系统管理/更多设置--输入法--百度输入法定制版/搜狗输入法vivo版--键盘界面设置/输入设置--开启“候选区显示短信内验证码”;2、手机设置--(应用与权限)--(系统应用设置)--信息--(隐私保护)--验证码信息--关闭验证码安全保护”功能;3、i管家--应用管理/软件管理--权限管理-...
液晶显示器的亮度和对比度如何调节呢,怎么设置对眼睛有好处呢
(色彩、亮度、对比度、视角、色温)首先特别强调:对于任何显示器(CRT/LCD/……)来说,色彩始终是第一位的!色彩显示的真实度和柔和度,带给眼睛的是最直接的感受!至于亮度对比度甚至视角为什么要归到色彩篇来说,下文会有答案。【好液晶显示器的色彩标准】丰富而饱满的颜色、合适的亮度对比度、宽广的视角、灵活合理的...
"进入电脑的安全模式'是什么意思.
只使用基本的文件和驱动程序来启动,在登录之后,屏幕上显示命令提示符,而非Windows图形界面。说明:在这种模式下,如果你不小心关闭了命令提示符窗口,屏幕会全黑。可按下组合键Ctrl+Alt+Del,调出“任务管理器”,单击“新任务”,再在弹出对话框的“运行”后输入“C:\WINDOWS\explorer.exe”,可马上启动Windows XP的...
诺基亚老人家屏幕锁住怎么办,屏幕只显示充电以完成,请从墙壁插座拔掉充...
重启一下基本就好了。锁屏一般都是确定键加星号键
如何修改注册表
你应该只能输入源名称;如果不是,点击新键并按F2以编辑该名称。右击ThumbnailQuality并选择修改。在出现的窗口中,输入一个介于50到100的数字以指定缩略图的质量。默认值是90。该数字越小,图片显示的速度会越快,但是图片显示的质量会越低。点击十进制选项,然后点击OK。要改变缩略图的大小,右击资源管理器的图标,选择...
百度知道有些用户名只显示头尾数字,中间是星号呢?
你好,很高兴为你解答。百度知道用户名只显示头尾数字,中间显示是星号是因为这个用户是用手机注册的,ID是手机号,为了保护用户隐私,只会显示收尾数字。望采纳,如果还有不明白的,可以继续追问我。