i have jTextfield and jButton..
how to
in the key listener of the jTextfield, in the keyTyped event, check the e.getKeyChar() if it is the backspace, if not, do e.consume(); it will cancel the event
the keychar for backspace is 8
here is an example:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class ConsumeExceptForBackSpace extends JFrame {
private boolean canWrite = false;
public ConsumeExceptForBackSpace() {
super();
JButton b = new JButton("Click");
JTextField f = new JTextField("");
this.setLayout(new BorderLayout());
this.add(b, BorderLayout.CENTER);
this.add(f, BorderLayout.SOUTH);
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
canWrite = !canWrite;
}
});
f.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
if(e.getKeyChar() != KekEvent.VK_BACK_SPACE && !canWrite) e.consume();
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
});
this.pack();
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new ConsumeExceptForBackSpace();
}
}