Java --不可见,不可见,但可编辑JTextField

Java --不可见,不可见,但可编辑JTextField,java,netbeans,jtextfield,invisible,Java,Netbeans,Jtextfield,Invisible,如何创建可编辑但不可见的文本字段?我需要给我的程序提供参数,但我不想让用户看到他们实际上在输入什么。如果将其设置为“不可见”,则也无法编辑其内容。我试着让它像这样透明: 但由于某些原因,文本字段仍然显示。我也尝试过使用分层窗格,但我只能将文本字段放在它们上面,而不是相反,NetBeans只是移动它们,所以一切都合适 我对其他想法持开放态度,输入是一个字符串,后跟一个enter 我想我问错问题了。问题不在于文本是可见的,而是整个文本字段是可见的。输入是来自条形码阅读器的字符串,因此根本不需要显示任

如何创建可编辑但不可见的文本字段?我需要给我的程序提供参数,但我不想让用户看到他们实际上在输入什么。如果将其设置为“不可见”,则也无法编辑其内容。我试着让它像这样透明: 但由于某些原因,文本字段仍然显示。我也尝试过使用分层窗格,但我只能将文本字段放在它们上面,而不是相反,NetBeans只是移动它们,所以一切都合适

我对其他想法持开放态度,输入是一个字符串,后跟一个enter


我想我问错问题了。问题不在于文本是可见的,而是整个文本字段是可见的。输入是来自条形码阅读器的字符串,因此根本不需要显示任何内容


编辑:我们用另一种方式解决了这个问题。我们在背景图像的顶部添加了一条白线,将文本字段放在那里,并将每个文本字段的颜色都更改为白色。

我认为您可以使用JPasswordField,用户可以看到他写的字符数,但不能看到内容

新想法:

您可以将changelistener添加到jtextfield,当用户使用append方法将保存的任何字符写入StringBuilder时,将jtextfield自动设置为null以清除jtextfield

通过这种方式,用户写入的所有字符将存储在StringBuilder中,当用户单击enter按钮时,您将拥有用户写入字符的字符串


然后您只需调用StingBuilder的toString方法即可获得完整的字符串

我认为将keylistener添加到jpanel可以解决您的问题,请尝试以下方法:

String str = ""; // global
public void yourMethod() {
    JFrame yourFrame = new JFrame();
    JPanel yourPanel = new JPanel();
    yourFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    yourFrame.add(yourPanel);
    yourPanel.addKeyListener(new KeyListener() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_ENTER) { 
                System.out.println(str);// here you can use switch for cases that you want or whatever you want  to do with string, I simply print it out
                str = "";
            } else {
                str += e.getKeyChar();                    
            }
        }
        @Override
        public void keyTyped(KeyEvent e) {
        }
        @Override
        public void keyReleased(KeyEvent e) {
        }
    });
    // jpanel must be focused if you want key listener to work
    yourPanel.setFocusable(true);
    yourPanel.requestFocusInWindow();

    yourFrame.setSize(300, 250);
    yourFrame.setVisible(true);

}

首先,我知道我迟到了,这对你没什么帮助,但也许对其他人有帮助

我所做的只是在角落里设置textfield,并将宽度和高度设置为1,如下所示:textfield.setBounds0,0,1,1;
这使得它几乎不可能被看到。这使您仍然可以使用它。我知道从技术上讲,这并不能让它隐形,但它非常接近。

Post a..不太可能。它解决了用户看不到他们输入的问题,但我不希望他们看到任何东西。在设计意义上,在某个地方有一个字段,其中的数据是自动写入的,这看起来很愚蠢。但这是一个很好的解决方案。我想我问错了问题。问题不在于文本是可见的,而是整个文本字段是可见的。输入是来自条形码读取器的字符串,因此根本不需要显示任何内容。啊,好的,因此i thnik您可以在构造函数中使用字符串参数从条形码读取器传递字符串,而不是存储在UIComponent中,只要输入来自键盘,它就可以工作。读取器提供enter效果,但不提供字符串。然而,我们用另一种方式解决了这个问题,更新了这个问题。忽略了这个无形的要求,你没有回答这个问题,因此很可能会被否决。我建议在评论中发布这种想法,而不是在回答中,以避免遭到否决。你的想法可能对某些人有用,但仍然会被人看到。这个问题不是真的看不见,而是看不见,因此用户仍然可以使用伪键盘,但看不到他们在做什么。在这种情况下,磁卡读卡器就是这样。但是,因为你只有50%的声誉才能发表评论,所以你甚至不能给出一些小的见解或注释。有点像你不能在CodeGolf上发表评论,就像你在那里打了一个额外的空格,所以-1字节。如果你问我的话,有点白痴。