Editar texto em textarea

9 respostas
S

Preciso fazer tipo um editor de texto…
Como faço pra quando a pessoa selecionar uma parte do texto e apertar um botão de negrito por exemplo, soh a parte selecionada fika negrita?

eu preciso dos codigos de italico, negrito e sublinhado…apesar q acho q muda pouca coisa entre essas 3 coisass…entao se alguem souber um pelo menos hehe…

Desde ja agradeço!

9 Respostas

S

ninguem!? :S

S

se ningm souber como usar no textarea pode ser outro componennte mesmo…eu soh qero q ele faça com q mude apenas o texto selecionado

G

Olá Schoker,

conheço essa biblioteca que faz o que você precisa e se vacilar até muito mais.
Ainda não utilizei ela mas estou em um projeto que vou precisar, só não cheguei nessa parte ainda.

Conheci por indicação de um amigo meu.

Abraços

M

É perfeitamente possível fazer usando somente a API padrão do Java, mas isso requer um certo esforço de sua parte.

Você precisará usar Document’s, DocumentListener’s e JEditorPane’s.

Referências:
http://java.sun.com/docs/books/tutorial/uiswing/components/generaltext.html
http://java.sun.com/docs/books/tutorial/uiswing/components/editorpane.html

S

eu consegui fazer com alguns metodos...agora eu consigo selecionar o texto e fazer as seguintes operações: negrito, italico, sublinhado e a fonte...mass...nao sei pq eu nao estou conseguindo mudar o tamanho da fonte...ai vai o codigo:

nessa parte eu chamo o metodo que muda o estilo:

jcbTamanho.addActionListener(new ActionListener() 
{  
	public void actionPerformed(ActionEvent e) 
	{  
		setStyleValueFor(StyleConstants.FontSize, jcbTamanho.getSelectedItem());  
	}  
});
esse eh o metodo chamado:
private  void setStyleValueFor(Object tipoEstilo, Object value)
{  
	if(null != value /*&& "" != value*/)
	{  
		int ini = ta.getSelectionStart();  
		int fim = ta.getSelectionEnd();  
	
		StyledDocument styleDoc = (StyledDocument) ta.getDocument();  
		for(int indAtual = ini; indAtual < fim; indAtual++)
		{  
			String texto;  
			try	
			{  
				texto = styleDoc.getText(indAtual, 1);  
				Style est = styleDoc.addStyle(null, null);    //styleDoc.getStyle("default");  
				est.addAttributes(styleDoc.getCharacterElement(indAtual).getAttributes());  
				est.removeAttribute(tipoEstilo);  
				est.addAttribute(tipoEstilo, value);  
	
				styleDoc.remove(indAtual, 1);  
				styleDoc.insertString(indAtual, texto, est);                      
			} 
			catch (BadLocationException e) 
			{  
				e.printStackTrace();  
			}             
		}  
		ta.grabFocus();  
		ta.select(ini, fim);            
	}         
}

e o erro q da eh esse:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

aaa...outra coisa....quando eu deixo um texto formatado com varias palavras em negrito, sublinhadas, com outra fonte, etc...eu salvo o arquivo e quando eu abro ele abre tudo sem a formatação q eu tinha feito...como faço pra abrir com a formatação original?

Desde ja agradeço

J

Axei na net a um bom tempo e me ajudou muito esses 2 editores simples em java
o textpad é simples e o style pad tem pra editar cor e outras coisas tambm
fuça que funciona!

G

Mal cara, quando você disse textarea associei ao textarea do html.
Achei que fosse um projeto web.

=P

A

Acredito que o que você procura seja um :

negrito = Font.BOLD;

negrito = Font.PLAIN;

SuaAreaTexto.setFont (new Font ("font",negrito,14));
S

entao isso ai eu jah consigui…mas decidi agora fazer um editor simples rsrs…pq se nao ia dar muito trampo…o q eu to fazndo ele muda tudo e nao somente o selecionado…se vc muda o tamanho ele muda o texto inteiro…negritoo mesma coisa…mas agora soh falta uma coisa para eu terminar…eu qero fazer com que quando eu criar um arquivo e salva-lo ele abra como eu editei…por exemplo…criei um texto com negrito e fonte verdana com tamanho 14…se eu salvar…e depois abrir ele eu qero q ele abra com essas configurações…cada arquivo q eu abrir eu qero q abra como eu salvei ele antes…pq quando eu salvo e abro de novo ele abre com as configurações padrões…arial 12 e plain…alguem sabe como fazer isso?
desde ja agradeço

Criado 13 de fevereiro de 2010
Ultima resposta 15 de fev. de 2010
Respostas 9
Participantes 5