Uma caixa de texto, campo de texto ou caixa de entrada de texto é uma espécie de ferramenta utilizada na construção de uma interface gráfica de usuário (GUI). A finalidade de um caixa de texto é o de permitir ao utilizador inserir informações de texto de entrada a ser utilizado pelo programa. Diretrizes de interface do usuário recomendam uma caixa com uma única linha de texto quando é necessária apenas uma linha de entrada, e uma caixa de texto de várias linhas somente se for necessária mais de uma linha de entrada. Caixas de texto não editáveis pode servir ao propósito de simplesmente exibir texto.
JTextArea
A JTextArea é uma área multi-linha que exibe textos simples. Ela destina-se a ser um componente leve que proporciona compatibilidade com a fonte de classe java.awt.TextArea. Usa-se este componente para inserir ou exibir textos.
JScrollPane
Fornece uma visão de rolagem. A JScrollPane gerencia uma janela, barras de rolagem verticais e horizontais opcionais, linhas e título da coluna.
Exemplo:
Neste exemplo criamos um programa com uma área de texto onde se pode editar diretamente o texto ou inserir linhas no texto através de uma caixa de texto simples e um botão.
Java
import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class Texto implements ActionListener { // Declara Componentes JLabel rotulo; JTextArea area; JTextField texto; JButton botao; // Cria painel public Container CriaPainel() { // Cria conteudo da area de texto String conteudo = "Escreva um texto dentro da caixa de texto \n" + "Você também pode adicionar novas linhas nesta caixa" + "Escrevendo no editor e clicando no botão"; // Cria componentes rotulo = new JLabel("Insira um texto na caixa:"); area = new JTextArea(conteudo); texto = new JTextField(); botao = new JButton("Ok"); // Cria evento do botão botao.addActionListener(this); // Adiciona valores as propriedades da area de texto area.setFont(new Font("Serif", Font.ITALIC, 12)); area.setLineWrap(true); area.setWrapStyleWord(true); // Cria barra de rolagem e adiciona a area de texto JScrollPane scrooll = new JScrollPane(area); // Adiciona valores as propriedades da barra de rolagem // Barra vertical scrooll.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); // Tamanho da barra scrooll.setPreferredSize(new Dimension(250, 250)); // Borda com titulo scrooll.setBorder( BorderFactory.createCompoundBorder( BorderFactory.createCompoundBorder( BorderFactory.createTitledBorder("Caixa de Texto"), BorderFactory.createEmptyBorder(5,5,5,5)), scrooll.getBorder())); // Cria o painel JPanel painel = new JPanel(); // Cria um layout para os componentes painel.setLayout(new BoxLayout(painel,BoxLayout.PAGE_AXIS)); painel.setBorder(BorderFactory.createEmptyBorder(20,20,20,20)); // Alinha componentes rotulo.setAlignmentX(Component.CENTER_ALIGNMENT); area.setAlignmentX(Component.CENTER_ALIGNMENT); texto.setAlignmentX(Component.CENTER_ALIGNMENT); botao.setAlignmentX(Component.CENTER_ALIGNMENT); // Adiciona componentes no painel painel.add(rotulo); painel.add(Box.createVerticalStrut(10)); // Adiciona a barra de rolagem pois a area de texto // está já foi adiciona dentro dela logo acima. painel.add(scrooll); painel.add(Box.createVerticalStrut(5)); painel.add(texto); painel.add(Box.createVerticalStrut(5)); painel.add(botao); // Retorna o painel return painel; } public void actionPerformed(ActionEvent arg0) { // Cria evento para o botão if (arg0.getSource() == botao) { area.append(texto.getText() + "\n"); } } // Cria a GUI public static void criaGUI() { // Cria formulario JFrame formulario = new JFrame("DA - JTextArea"); formulario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Cria nova instancia da classe Texto texto = new Texto(); // adiciona painel ao formulario formulario.setContentPane(texto.CriaPainel()); // Compacta componetes no formulario formulario.pack(); // Mostra formulario formulario.setVisible(true); } public static void main(String[] args) { // Cria thread do swing javax.swing.SwingUtilities.invokeLater(new Runnable() { @Override public void run() { // Chama a GUI criaGUI(); } }); } }
Mas não aparece a barra dentro do espaço de barra…