Os componentes Swing texto são muito mais poderosos que os do Abstract Window Tookit (AWT). Isso por causa da application programming interface (API) que o Swing fornece, com as novas funcionalidades que a arquitetura model-view-controller a qual trás novos componentes nativos.
Há muitos componentes para ser ver e customizar no Swing. Vamos ver alguns componentes de texto e seus controles. Depois algumas funcionalidades de alguns componentes como o (JTextField, JPasswordField e JTextArea).
Os Componentes de Texto
Todos os componentes de texto do Swing são derivados do JTextComponent, o qual é uma subclasse do JComponent. O Swing fornece funcionalidades para controle de texto, as quais três substituem as funcionalidades dos componentes do AWT, TextField e TextArea são dois componentes novos.
Muito da força desses componentes vem da generalização e flexibilidade da arquitetura que os unem.
Componentes JTextField e JPasswordField
JTextField e JPasswordField são componentes de texto simples. Ambos contêm um simples linha de texto, a qual pode ser fornecida pela aplicação ou digitada pelo o usuário.
A principal diferença entre esses dois componentes é que o JPasswordField não mostra o conteúdo, ao invés disso apresenta asteriscos para representar cada letra. Como o seu nome sugere o uso deve ser aplicado para campos que não devem ser visualizados enquanto são digitados.
Tudo que for mostrado no JTextField também é aplicável para o JPasswordField.
Criando um Campo de Texto
Quando você cria um JTextField, pode-se especificar alguns atributos:
- Qual Document o texto está vinculado.
- Qual o conteúdo inicial do campo.
- O número de colunas a ser mostrado.
Veremos depois que todo componente de texto implementa a interface Document. Cada texto utiliza diferentes Documents que são específicos para a sua necessidade: JTextField utiliza uma instância da classe PlainDocument para guardar texto.
Se você fornecer um texto ao inicializar o componente, o texto será guardado no Document e será apresentado quando aparecer na tela. Se não fornecer um texto inicial ele irá aparecer em branco.
O método setText para ser utilizando para mudar o texto. Quando o usuário pressionar o Backspace em um texto, um ActionEvent é gerado.
A aplicação pode registrar um ActionListener para receber esse evento e utilizar o método getText para recuperar qualquer coisa digitada no controle.
Tamanho do Campo do Texto
Quando você cria um campo de texto, você pode especificar a largura das colunas como um argumento do construtor JTextField; pode-se também configurar a largura utilizando o método setColumns.
Note contudo que, a configuração do número de colunas não limita a quantidade de caracteres que podem ser digitados, para que isso aconteça precisa-se customizar a classe Document. O único efeito aplicado até agora é o tamanho do campo.
Claro que se for utilizando uma interface para criar telas, isso pode ser configurando automaticamente com o arrastar do tamanho do componente.
Alinhamento de Conteúdo
Por causa da largura do campo não é necessário ter o mesmo tamanho do conteúdo, mas tem as configurações de alinhamento. Há cinco tipos de alinhamento: esquerdo, direito, centro, justificado a esquerda(LEADING) e justificado a direita(TRAILING). Isso é feito com o setHorizontalAlignment passando um dos seguintes argumentos: JTextField.LEFT, JTextField.RIGHT, JTextField.CENTER, JTextField.LEADING e JTextField.TRAILING
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
import java.awt.Container; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JTextField; public class AlignmentSample { public static void main(String args[]) { JFrame frame = new JFrame("Alignment Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container content = frame.getContentPane(); content.setLayout(new GridLayout(0, 1)); JTextField textField = new JTextField("Left"); textField.setHorizontalAlignment(JTextField.LEFT); content.add(textField); textField = new JTextField("Center"); textField.setHorizontalAlignment(JTextField.CENTER); content.add(textField); textField = new JTextField("Right"); textField.setHorizontalAlignment(JTextField.RIGHT); content.add(textField); textField = new JTextField("Leading"); textField.setHorizontalAlignment(JTextField.LEADING); content.add(textField); textField = new JTextField("Trailing"); textField.setHorizontalAlignment(JTextField.TRAILING); content.add(textField); frame.pack(); frame.setSize(250, (int) frame.getSize().getHeight()); frame.setVisible(true); } } |
Scroll Offset
Os métodos a seguir controlam a capacidade de rolagem, só que não achei nenhum exemplo funcional para JTextField.
public int getScrollOffset()
public void setScrollOffset(int scrollOffset)
public void scrollRectToVisible(Rectangle r).
Deixe um comentário