[RESOLVIDO] Proibir entradas no jTextField

5 respostas
pequenoo

Olá pessoal!

Estou fazendo um sistema de datilografia computadorizada em Java, e no TextField que a pessoal está digitando a linha modelo ele não poderá nem apagar com o backspace, se movimentar com as setas do teclado e muito menos colar um conteúdo no TextField.

Já procurei bastante até mesmo aqui no forum e não consegui encontrar…

Se alguém puder me dar uma ajuda eu agradeço!!

Leandro L. Isotton
2° Sem de Sistemas de Informação
UNASP - Campus 3

5 Respostas

pequenoo

Olá pessoal já procurei MUUUUIIITTOO!! e achei como bloquear algumas teclas, mas falta ainda bloquear selecionar o texto ta também copiar e colar!!

abaixo o código que bloqueia o backspace, delete, e esquerda!!

if (evt.getKeyCode() == evt.VK_BACK_SPACE) {
        evt.consume();
    }

    if (evt.getKeyCode() == evt.VK_DELETE) {
        evt.consume();
    }
    
    if (evt.getKeyCode() == evt.VK_LEFT){
        evt.consume();
    }
heatcold

Ao inves de um JTextField você pode utilizar um JLabel e ir colocando os dados nele de acordo com eventos no teclado. Ai você pode filtrar as teclas que quizer.

pequenoo

Entendo o que vc quer dizer, heatcold, só que como é um progrma de datilografia, e o usuário é novato, tenho que ter um cursor piscando no ponto de inserção, por isso complica a minha vida!

Mas desde já agradeço pela ajuda! se alguém tiver outra solução!!!

ivo_costa

ai o código.
Não vai ficar mal acustamado:

import java.awt.Dimension;
import java.awt.Event;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;


public class Frame extends JFrame {

	public Frame(){
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setPreferredSize(new Dimension(230, 40));
		
		final JFormattedTextField text = new JFormattedTextField();
		text.setBounds(10, 10, 100, 20);
		text.addMouseMotionListener(new MouseMotionAdapter(){

			@Override
			public void mouseDragged(MouseEvent e) {
				e.consume();
				text.select(text.getText().length(), text.getText().length());
			}
		});
		
		text.addMouseListener(new MouseAdapter(){
			@Override
			public void mousePressed(MouseEvent e) {
				e.consume();
				text.select(text.getText().length(), text.getText().length());
			}

			@Override
			public void mouseClicked(MouseEvent e) {
				e.consume();
				text.select(text.getText().length(), text.getText().length());
			}
		});
		
		text.addKeyListener(new KeyAdapter(){
			@Override
			public void keyPressed(KeyEvent e) {
				if(e.getKeyCode() == KeyEvent.VK_BACK_SPACE ||
				   e.getKeyCode() == KeyEvent.VK_DELETE ||
				   e.getKeyCode() == KeyEvent.VK_LEFT ||
				   e.getKeyCode() == KeyEvent.VK_HOME)
				{
					e.consume();
				}
				
				if(e.getModifiers() == Event.CTRL_MASK){
					if(e.getKeyCode() == KeyEvent.VK_V){
						e.consume();
					}
				}
			}
		});
		panel.add(text);
		
		this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		this.add(panel);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
		this.pack();
	}
	
	public static void main(String[] args) {
		new Frame();
	}
}
pequenoo

Muito obrigado galera…

Está tudo funcionando!!

Criado 1 de setembro de 2008
Ultima resposta 4 de set. de 2008
Respostas 5
Participantes 3