簡體   English   中英

--Invisible,不可見,但可編輯JTextField

[英]--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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM