Introdução ao JTextPane

O JTextPane é usado para estilizar um documento e para representá-lo graficamente, além de incorporar imagens e outros componentes. É uma subclasse do JEditorPane que forma a base para componentes estilizados para o texto fornecido pelo Java Swing Package. Isso também pode ser usado para adicionar formatos de texto personalizados e, para texto sem estilo, é usada uma área de texto comum. O JTextPane utiliza documentos estilizados usando uma interface StyledDocument como modelo. A interface do documento é o pai do qual a interface StyledDocument é derivada. A interface do documento também é o modelo padrão para o JTextPane.

Construtores de JTextPane

  1. public JTextPane () : esse construtor exibe uma nova área de texto em branco. Isso cria uma nova instância do StyledEditorKit e define o modelo de documento como nulo. Este construtor é herdado da interface pai JEditorPane.
  2. public JtextPane (StyledDocument doc) : Um novo JTextPane é criado com o modelo de documento especificado pela palavra-chave doc aqui. Este construtor é herdado do documento da interface pai.

Métodos do JTextPane

Existem métodos fixos, mas inumeráveis, implementados no JTextPane. Alguns dos principais métodos estão listados abaixo:

1. Estilo

Este método pode ser usado para incorporar novos estilos na hierarquia de estilos lógicos. A seguir, alguns dos métodos filhos derivados de Style são:

addStyle: É usado para adicionar um novo estilo à hierarquia. Os atributos mencionados aqui são resolvidos em um método ascendente, de modo que o atributo fornecido ao filho substitua automaticamente o mesmo atributo do pai.

Sintaxe: public Style addStyle (String str, Style par)

O parâmetro str é o nome do estilo exclusivo em sua coleção. O nome se torna nulo quando o estilo fica sem nome. par é o estilo pai especificado. Este método addStyle retorna o novo estilo.

removeStyle: É usado para remover um estilo que não seja nulo anteriormente adicionado ao documento.

Sintaxe: public void removedStyle(String str)

str sendo o nome do estilo a ser removido

getStyle: É usado para buscar o nome do estilo não nulo e que foi adicionado anteriormente.

Sintaxe: public Style getStyle (String str)

str é o nome do estilo a ser recuperado

setLogicalStyle: Usado para definir o estilo para usar o parágrafo da posição atual do cursor.

Sintaxe: public void setLogicalStyle (Style log)

log sendo o estilo lógico dado ao parágrafo

getLogicalStyle: Usado para recuperar o estilo lógico dado ao parágrafo definido na posição atual do cursor e retorna o estilo.

Sintaxe: public Style getLogicalStyle()

2. AttributeSet ()

Existem muitas subclasses usadas para recuperar o atributo de caractere que está na posição atual do cursor. Eles são os seguintes:

  • public AtrributeSet () getCharacterAttributes (): retorna os atributos da posição atual do cursor.
  • public AttributeSet getParagraphAttributes (): Usado para recuperar os atributos de parágrafo atuais da posição atual do cursor.
  • public AttributeSet setParagraphAttributes (Atributo atr, booleano novo): Usado para aplicar os atributos passados ​​como parâmetros ao parágrafo. No caso de seleções, aplica os atributos aos parágrafos que cruzam essa seleção. E no caso em que não há seleção, ela é aplicada ao parágrafo presente na posição atual do cursor. atr é o atributo passado e, se o novo parâmetro for verdadeiro, ele primeiro substitui os atributos já existentes.
  • public MutableAttributeSet getInputAttributes (): usado para buscar os atributos de entrada para o painel.
  • public void setCharacterAttributes (AttributeSet atr, boolean new): Usado para aplicar os atributos passados ​​ao conteúdo do caractere. Os atributos são aplicados ao intervalo selecionado quando uma seleção está presente e, se a seleção não estiver presente, os atributos são aplicados a qualquer novo texto inserido. new if true retorna os atributos existentes
  • public AttributeSet getCharacterAttributes (): Recupera os atributos de caracteres presentes no local atual do cursor ou nulo.

3. StyledDocument ()

É usado para recuperar o modelo que está associado ao editor.

Sintaxe: public StyledDocument getStyledDocument()

4. setDocument

Usado para associar o editor a um documento de texto que deve pertencer a StyledDocument. Ele substitui a classe setDocument de JTextComponent. Portanto, é necessário que o documento a ser editado possa ser convertido em um StyledDocument sem o qual ele gera uma IllegalArgumentException.

Sintaxe: public void setDocument(Document new) - novo é o documento a ser exibido ou alterado.

5. setEditorKit

Usado para definir o kit que está atualmente instalado para manipular o conteúdo. Essa é a propriedade usada para estabelecer o tipo de conteúdo do editor. Ele substitui o setEditorKit da classe JEditorPane. Isso também gera uma IllegalArgumentException se o kit não pertencer ao StyledEditorKit.

Sintaxe: public final void setEditorKit (EditorKit edit) - a edição é o comportamento do kit necessário.

6. paramString

Isso retorna uma representação de sequência de JTextPane.

Sintaxe: protected String paramString() - Este método é usado principalmente para depuração e seu conteúdo retornado varia entre diferentes implementações. A cadeia retornada pode estar vazia e não nula.

Programa para implementar o JTextPane

//Importing all the dependancies of Java awt used for GUI purpose
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
//Importing all the dependancies of Java swing package also used for GUI purpose and has many built-in functions
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
public class JTextPaneTest (
//Handling BadLocationException to report such bad locations in the document model
public static void main(String args()) throws BadLocationException (
//The string name we give here is displayed as the document name
JFrame jfr = new JFrame("Example of JTextPane");
// Makes the application to exit preventing it from running in the background
jfr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container con = jfr.getContentPane();
JTextPane jpan = new JTextPane();
SimpleAttributeSet attrSet = new SimpleAttributeSet();
StyleConstants.setBold(attrSet, true);
// Attributes are set just before adding the text
jpan.setCharacterAttributes(attrSet, true);
jpan.setText("This ");
// Few of the other examples of attributes and features present in JTextPane
attrSet = new SimpleAttributeSet();
StyleConstants.setAlignment(attrSet, 1);
// Required colors can be set from the range of fixed available choices
StyleConstants.setForeground(attrSet, Color.yellow);
StyleConstants.setBackground(attrSet, Color.magenta);
Document doc = jpan.getStyledDocument();
doc.insertString(doc.getLength(), "is an ", attrSet);
attrSet = new SimpleAttributeSet();
StyleConstants.setItalic(attrSet, true);
StyleConstants.setForeground(attrSet, Color.RED);
StyleConstants.setBackground(attrSet, Color.cyan);
doc.insertString(doc.getLength(), "Example ", attrSet);
StyleConstants.setUnderline(attrSet, true);
StyleConstants.setFontSize(attrSet, 20);
doc.insertString(doc.getLength(), "of JTextPane ", attrSet);
// Scroll Pane is used to display a component and to change its size dynamically
JScrollPane scrollPane = new JScrollPane(jpan);
con.add(scrollPane, BorderLayout.CENTER);
jfr.setSize(550, 300);
jfr.setVisible(true);
)
)

Resultado:

Conclusão

Portanto, o JTextPane é sempre usado nos casos em que os documentos precisam ser representados graficamente. Todos os atributos de um parágrafo com um estilo lógico anexado têm valores padrão que serão aplicados caso não sejam substituídos. A vantagem que o JTextPane possui sobre os painéis do editor é que ele possui esses numerosos métodos internos, fáceis de chamar e trabalhar. Não há necessidade de nenhum arquivo HTML ou RTF incorporar imagens devido ao fornecimento de APIs fornecidas na classe JTextPane.

Artigos recomendados

Este é um guia para o JTextPane. Aqui discutimos os métodos, construtores e programa para implementar o JTextPane com a sintaxe e a saída. Você também pode consultar o seguinte artigo para saber mais -

  1. JTextField em Java
  2. JPanel em Java
  3. JButton em Java
  4. JSplitPane
  5. Jogue vs Joga | As 5 principais diferenças que você deve saber