Simular pressionamento de tecla em um JTextField [RESOLVIDO]

3 respostas
leonardobhbr

Bom dia galera seguinte eu sei q é P.O.G mais gostaria de simular o pressionamento de uma tecla em um JTextField
estou tentando simular

tentei usar KeyStroke.getKeyStroke
mais nao consegui na verdade o meu JTextField não pode ser editavel mais eu tenho q inserir nele so q não pode ser via setText

3 Respostas

ViniGodoy

Por que não pode ser via setText? Acho que é uma das únicas maneiras, se o seu JTextField não for editável. Outra seria chamar o seu document diretamente (o que é o que o setText faz).

Para simular o pressionamento de teclas, você pode usar a classe Robot.

leonardobhbr

Esse é o meu problema meu document é especializado

this.setDocument(new PlainDocument()
		{
			private static final long	serialVersionUID	= 1L;

			@Override
			public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
			{
				String text = new StringBuilder(SGNumberTextField.this.getText().replaceAll("[^0-9]", "")).append(
						str.replaceAll("[^0-9]", "")).toString();
				super.remove(0, getLength());
				if(text.isEmpty())
				{
					text = "0";
				}
				else
				{
					text = new BigInteger(text).toString();
				}
				super.insertString(0, numberFormat.format(new BigDecimal(
						getLimit() > 0 == text.length() > getLimit() ? text.substring(0, getLimit()) : text)
						.divide(new BigDecimal(Math.pow(10, numberFormat.getMaximumFractionDigits())))), a);
			}

			@Override
			public void remove(int offs, int len) throws BadLocationException
			{
				super.remove(offs, len);
				if(len != getLength())
				{
					insertString(0, "", null);
				}
			}
		});
		this.addCaretListener(new CaretListener()
		{
			boolean	update	= false;

			public void caretUpdate(CaretEvent e)
			{
				if(!update)
				{
					update = true;
					setCaretPosition(getText().length());
					update = false;
				}
			}
		});
		this.addKeyListener(new KeyAdapter()
		{
			@Override
			public void keyPressed(KeyEvent e)
			{
				if(e.getKeyCode() == KeyEvent.VK_DELETE)
				{
					setText("");
				}
			}
		});

como seria inserir via Document?

leonardobhbr

Obrigado ViniGodoy
consegui resolver via Doucment.insertString

Criado 11 de maio de 2010
Ultima resposta 11 de mai. de 2010
Respostas 3
Participantes 2