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

时间:2017-04-28 11:13:00

标签: java netbeans jtextfield invisible

如何创建可编辑但不可见的文本字段?我需要为我的程序提供参数,但我不希望用户看到他们实际输入的内容。如果我将其设置为隐身,我也无法编辑它的内容。我试着像这样透明: Making a JButton invisible, but clickable? 但出于某种原因,文本字段仍然显示。我也尝试使用分层窗格,但我只能将文本字段放在它们之上,而不是相反,NetBeans只是移动它们,所以一切都适合。

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

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

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

3 个答案:

答案 0 :(得分:2)

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

https://docs.oracle.com/javase/tutorial/uiswing/components/passwordfield.html

新想法:

你可以在你的jtextfield中添加一个changelistener,当用户写任何一个字符时,它将追加方法保存到StringBuilder,然后自动将Jtextfield设置为null以清除jtextfield

以这种方式,用户编写的所有字符都将存储在StringBuilder中,当他单击“输入”按钮时,您将拥有用户将字符写入字符的字符串

然后你只需要调用StingBuilder的toString()方法来获取完整的String

答案 1 :(得分:1)

我认为将jylnel添加keylistener可以解决您的问题,尝试这样的事情:

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);

}

答案 2 :(得分:-1)

首先,我知道我迟到了,对你没有任何帮助,但也许是为了其他人。

我所做的只是在角落设置文本字段并将宽度和高度都设置为1(如下所示:TextField.setBounds(0, 0, 1, 1);) 这使它几乎不可能被看到。这使您仍然可以使用它。我知道这在技术上并不会让它看不见但它非常接近。