想让文本里的内容隐藏,不是变成空格或者白色字体,当用户输入后与当前内容一致时显示"回答正确"

解决方案 »

  1.   

    .ENABLE()  不知道拼的对不对 呵呵
      

  2.   

    要掩盖的话我只能想到Focus在JTextField的时候就弹出个同样大小的Popup给遮住...要不就用JPasswordField
      

  3.   

    将text_text_widget定义为text_widget.setEchoChar(' ');
      

  4.   

    恩,研究了下,原理是先把输入的字符保存起来,然后用consume让其不显示,假如输入回车就进行比较并且清空保存的字符串,输入back space的话就把输入的内容减去一个字符.以下是代码,写的稍为丑了点...import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    public class Driver { static final String pw = "abcd";
    static String input = "";
    static JFrame f;
    static JTextField p;
    static JLabel result;

    public static void main(String[] args) {
    f = new JFrame("HidingTest");
    p = new JTextField();
    result = new JLabel();
    result.setPreferredSize(new Dimension(100, 20));

    p.addKeyListener(new KeyListener() { @Override
    public void keyPressed(KeyEvent ke) {

    } @Override
    public void keyReleased(KeyEvent arg0) {

    } @Override
    public void keyTyped(KeyEvent ke) {
    char in = ke.getKeyChar();

    if(ke.getKeyChar() == KeyEvent.VK_ENTER) {
    if(input.equals(pw)) {
    input = "";
    result.setText("correct");
    }else {
    result.setText("invalid");
    }
    }else if(ke.getKeyChar() == KeyEvent.VK_BACK_SPACE){
    input = input.replaceAll(".$", "");
    }else {
    input += in;
    ke.consume();
    }
    }

    });

    f.add(p, BorderLayout.NORTH);
    f.add(result);
    f.pack();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);

    }}
      

  5.   

    顺便说下, 密码是 abcd , 有点小错, 改了下..import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    public class Driver { static final String pw = "abcd";
    static String input = "";
    static JFrame f;
    static JTextField p;
    static JLabel result;

    public static void main(String[] args) {
    f = new JFrame("HidingTest");
    p = new JTextField();
    result = new JLabel();
    result.setPreferredSize(new Dimension(100, 20));

    p.addKeyListener(new KeyListener() { @Override
    public void keyPressed(KeyEvent ke) {

    } @Override
    public void keyReleased(KeyEvent arg0) {

    } @Override
    public void keyTyped(KeyEvent ke) {
    char in = ke.getKeyChar();

    if(ke.getKeyChar() == KeyEvent.VK_ENTER) {
    if(input.equals(pw)) {
    result.setText("correct");
    }else {

    result.setText("invalid");
    }

    input = "";
    }else if(ke.getKeyChar() == KeyEvent.VK_BACK_SPACE){
    input = input.replaceAll(".$", "");
    }else {
    input += in;
    ke.consume();
    }
    }

    });

    f.add(p, BorderLayout.NORTH);
    f.add(result);
    f.pack();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);

    }}
      

  6.   

    这个用数组的话就点没必要吧...,我试过用中文比较也是可以的, 而且数组比较起来不如String方便, 如果实在要用的话用char[]好点