Java 因此,如何修改JTextField以屏蔽字符而不使用JPasswordField

Java 因此,如何修改JTextField以屏蔽字符而不使用JPasswordField,java,swing,Java,Swing,我们有一个应用程序可以屏蔽几乎任何应用程序(win32、浏览器、终端,甚至eclipse使用的SWT)上的数字,但Swing是另一个问题 对于这个问题,假设我是JVM的一部分,我只是在类路径上插入了我的jar,我是调用其他人主程序的主程序,因此我可以访问JVM中我需要的所有内容,但我没有编写使用这些JTextFields的原始应用程序 如果一个应用程序有一个JTextField,我如何修改它,使它仍然存储我在其中设置的数字,并屏蔽它,使它像JPasswordField一样显示,但仍然拥有原始应用

我们有一个应用程序可以屏蔽几乎任何应用程序(win32、浏览器、终端,甚至eclipse使用的SWT)上的数字,但Swing是另一个问题

对于这个问题,假设我是JVM的一部分,我只是在类路径上插入了我的jar,我是调用其他人主程序的主程序,因此我可以访问JVM中我需要的所有内容,但我没有编写使用这些JTextFields的原始应用程序

如果一个应用程序有一个JTextField,我如何修改它,使它仍然存储我在其中设置的数字,并屏蔽它,使它像JPasswordField一样显示,但仍然拥有原始应用程序编写器编写的所有侦听器。此外,当他们单击Ok按钮、Next按钮或Submit按钮时,我新屏蔽的字段应该像旧的JTextField一样应用,并且没有任何更改

谢谢,
Dean

如果你想做类似的事情,这意味着你有更改应用程序的权限和可能性。在这种情况下,只需将
JTextField
替换为
JPasswordField
。它会隐藏角色,这正是你想要的


而且,您不必担心侦听器或对文本字段的方法调用:它们仍然可以工作,因为
JPasswordField
JTextField

的子类。不幸的是,在我的情况下,另一个答案不起作用,因为我没有权限更改应用程序,因为它不是我的应用程序……但是,我可以通过字节码更改尽管原始jdk类很棘手,但应用程序仍然很复杂。我可以在类路径上获取我的jar,并且可以在程序启动之前运行我的jar。我可以为win32应用程序这样做,但不幸的是,这对java应用程序来说非常困难。

我想我理解您试图实现的目标,但我真正好奇的是为什么?这个(相当不寻常的)要求在应用程序中删除文本的用例是什么。通常不用于“安全”目的?我真的不太明白。什么?用例是由代理键入的社会安全号码等,我们为代理键入这些号码,但不希望其可见。假设我在应用程序启动后使用反射。该应用程序将向JTextField添加侦听器,我将删除该JTextField(其中包含侦听器)并将其放入我的JPasswordField(该应用程序不知道也不会向其中添加侦听器)。那感觉好像不管用????我错过了什么?