Estou usando um JScrollPane junto com uma JTextArea em um software de bate-papo(chat).
Porém tenho 2 dúvidas em relação a barra de rolagem:
1- Como definir que só quero a barra horizontal ou vertical?
2- Como faço para a barra de rolagem acompanhar o JTextArea? Por exemplo, no chat eu mando mensagens através de um JText que as adiciona na JTextArea(que está com enabled = false). Em um determinado numero de mensagens enviadas aparece a barra vertical do JScrollPane, porém ela não desce junto com as mensagens que vão surgindo, você tem que desce-la com o mouse para acompanhar as últimas mensagens recebidas. Eu quero que ela(barra de rolagem vertical) permaneça sempre em baixo.
Para o primeiro caso, as propriedades HORIZONTAL_SCROLLBAR_NEVER e HORIZONTAL_SCROLLBAR_ALWAYS (e relacionadas - vide o tutorial na parte de “Setting the Scroll Bar Policy”) parecem ser o que você precisa.
Para o segundo caso, acompanhar a rolagem parece ser o comportamento padrão do JScrollPane quando este contém um componente de texto, então você não precisaria implementar isso, a não ser que desabilite o autoscroll. Veja meu exemplo:
Em relação ao segundo caso:
Quando você trabalha com uma JTextArea com JScrollPane, se editar direto na JTextArea a barra acompanha mesmo. Só que no meu caso, a JTextArea não é editável, ela apenas mostra os textos que foram digitados no JTextField. Nessa caso a barra de rolagem não acompanha. =/
Porém ainda não consegui resolver o problema. Constatei que o problema é porque as mensagens são enviadas para a JTextArea por um PrintWriter para todos os usuários conectados ao chat, e por isso a barra de rolagem não acompanha. Alguma sugestão?