[英]--Invisible, Not visible, but editable JTextField
如何創建一個可編輯但不可見的文本字段? 我需要給程序提供參數,但是我不希望用戶看到他們實際輸入的內容。 如果將其設置為不可見,我也將無法編輯其內容。 我嘗試將其透明化,如下所示: 使JButton不可見,但可單擊? 但由於某些原因,文本字段仍然顯示。 我也嘗試過使用分層窗格,但是我只能將文本字段放在它們之上,而不能用其他方法,NetBeans只是將它們移動,因此一切都適合。
我對其他想法持開放態度,輸入內容是一個字符串,后跟一個“輸入”。
我想我問錯了這個問題。 問題不在於文本可見,而是整個文本字段可見。 輸入是來自條形碼讀取器的字符串,因此完全不需要顯示任何內容。
編輯:我們以不同的方式解決了它。 我們在背景圖片的頂部添加了一條白線,將文本字段放在此處,並將每種顏色更改為白色。
我認為您可以將JPasswordField用於您的目的,用戶可以看到他編寫的字符數,但看不到內容
https://docs.oracle.com/javase/tutorial/uiswing/components/passwordfield.html
新主意:
您可以在jtextfield中添加一個changelistener,當用戶編寫任何字符時,將其保存到帶有append方法的StringBuilder中,然后將Jtextfield自動設置為null以清除jtextfield
這樣,用戶寫入的所有字符都將存儲在StringBuilder中,當他單擊Enter按鈕時,您將獲得用戶將字符寫入字符的String
那么您只需要調用StingBuilder的toString()方法即可獲取完整的String
我認為向jpanel添加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);
}
首先,我知道我來晚了,這不再對您有幫助,但也許對其他人有幫助。
我所做的只是將文本字段設置在角落,並將寬度和高度都設置為1(例如: TextField.setBounds(0, 0, 1, 1);
),這使得幾乎看不到它。 這使您仍然可以使用它。 我知道這在技術上不會使其不可見,但它非常接近。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.