如何创建可编辑但不可见的文本字段?我需要为我的程序提供参数,但我不希望用户看到他们实际输入的内容。如果我将其设置为隐身,我也无法编辑它的内容。我试着像这样透明: Making a JButton invisible, but clickable? 但出于某种原因,文本字段仍然显示。我也尝试使用分层窗格,但我只能将文本字段放在它们之上,而不是相反,NetBeans只是移动它们,所以一切都适合。
我对其他想法持开放态度,输入是一个字符串后跟一个"输入"。
我想我问的问题不对。问题不在于文本是可见的,而是整个文本字段是可见的。输入是条形码阅读器的字符串,因此根本不需要显示任何内容。
编辑:我们以不同的方式解决了这个问题。我们在背景图片的顶部添加了一条白线,将文本字段放在那里,并将其中的每种颜色都更改为白色。答案 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);
)
这使它几乎不可能被看到。这使您仍然可以使用它。我知道这在技术上并不会让它看不见但它非常接近。