Problema com editor de texto

5 respostas
JocaBaldini

Sei que esse assunto já apareceu bastante aqui, mas não achei nada que solucionasse o meu problema então vou postar aqui.

Estou desenvolvendo um editor de texto para um trabalho na facul e surgiu um problema no botão sublinhar. Eu consegui fazer ele colocar o sublinhado sem problemas mas não consigo fazer o mesmo botão desublinhar (se crio um botão só pra desublinhar funciona).

O código é o seguinte:

JMenuItem sublinhado = new JMenuItem("Sublinhado");

		sublinhado.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg1) {
				SimpleAttributeSet sas = new SimpleAttributeSet();
				if (StyleConstants.isUnderline(sas)) {
					StyleConstants.setUnderline(sas, false);
					texto.getStyledDocument()
							.setCharacterAttributes(
									texto.getSelectionStart(),
									texto.getSelectionEnd()
											- texto.getSelectionStart(), sas,
									false);
				} else {
					StyleConstants.setUnderline(sas, true);
					texto.getStyledDocument()
							.setCharacterAttributes(
									texto.getSelectionStart(),
									texto.getSelectionEnd()
											- texto.getSelectionStart(), sas,
									false);
				}
			}
		});

A saída do if “StyleConstants.isUnderline(sas)” é sempre false, mesmo o texto estando sublinhado.

Alguém tem ideia do motivo?

Abraços

5 Respostas

E

A resposta é óbvia. Veja seu trecho de código:

SimpleAttributeSet sas = new SimpleAttributeSet();  
                if (StyleConstants.isUnderline(sas)) {

Você está criando um NOVO SimpleAttributeSet (que deve estar limpinho) em vez de obtê-lo do texto sublinhado (sei lá como você faria isso).
Esse NOVO SimpleAttributeSet, limpo, não deve ter o atributo Underline setado, não?

JocaBaldini

Justo.

Mudando a pergunta, alguém sabe como pegar o SimpleAttributeSet direto do texto selecionado?

E

http://docs.oracle.com/javase/6/docs/api/javax/swing/text/DefaultStyledDocument.html - não vi nenhum get aqui :frowning:

JocaBaldini

Consegui resolver o problema fazendo o botão de outra forma.

// **** Botão Sublinhado ****
Action sublinhado = new StyledEditorKit.UnderlineAction();
sublinhado.putValue(Action.NAME, "Sublinhado");

Dessa forma o botão está funcionando.

JocaBaldini

Aproveitando o tópico, consegui fazer o botão salvar de forma que um arquivo fosse criado.

Como faço para que apareça a tela e o usuário possa selecionar a pasta onde deseja salvar e o nome do arquivo?

Segue o código
// **** Botão Salvar ****
JMenuItem arqSalvar = new JMenuItem("Salvar");

arqSalvar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg2) {


File arq = new File("C:/Users/Tulio/Desktop/LCP/TrabalhoFinal", "arquivo.txt");


try {
arq.createNewFile();
FileWriter fw = new FileWriter(arq);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(texto.getText());
bw.flush();
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //cria um arquivo vazio
}
});

Abraços

Criado 22 de junho de 2012
Ultima resposta 27 de jun. de 2012
Respostas 5
Participantes 2