java - insertar - Agregar ScrollPane a JTextArea
text box java (2)
La barra de desplazamiento aparece cuando el texto va más allá de los límites de su área de visualización. No use Posicionamiento absoluto , para una charla tan pequeña, siempre prefiera los Administradores de diseño , lea el primer párrafo del primer enlace, para conocer la ventaja de usar un Administrador de diseño.
Lo que debes hacer es usar esta cosa:
JTextArea msgArea = new JTextArea(10, 10);
msgArea.setWrapStyleWord(true);
msgArea.setLineWrap(true);
JScrollPane msgScroller = new JScrollPane();
msgScroller.setBorder(
BorderFactory.createTitledBorder("Messages"));
msgScroller.setViewportView(msgArea);
panelObject.add(msgScroller);
Aquí hay un pequeño programa para su comprensión:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JTextAreaScroller
{
private JTextArea msgArea;
private JScrollPane msgScroller;
private JTextArea logArea;
private JScrollPane logScroller;
private JButton sendButton;
private JButton terminateButton;
private Timer timer;
private int counter = 0;
private String[] messages = {
"Hello there/n",
"How you doing ?/n",
"This is a very long text that might won''t fit in a single line :-)/n",
"Okay just to occupy more space, it''s another line./n",
"Don''t read too much of the messages, instead work on the solution./n",
"Byee byee :-)/n",
"Cheers/n"
};
private ActionListener timerAction = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
if (counter < messages.length)
msgArea.append(messages[counter++]);
else
counter = 0;
}
};
private void displayGUI()
{
JFrame frame = new JFrame("Chat Messenger Dummy");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout(5, 5));
JPanel centerPanel = new JPanel();
centerPanel.setLayout(new GridLayout(0, 1, 5, 5));
logArea = new JTextArea(10, 10);
logArea.setWrapStyleWord(true);
logArea.setLineWrap(true);
logScroller = new JScrollPane();
logScroller.setBorder(
BorderFactory.createTitledBorder("Chat Log"));
logScroller.setViewportView(logArea);
msgArea = new JTextArea(10, 10);
msgArea.setWrapStyleWord(true);
msgArea.setLineWrap(true);
msgScroller = new JScrollPane();
msgScroller.setBorder(
BorderFactory.createTitledBorder("Messages"));
msgScroller.setViewportView(msgArea);
centerPanel.add(logScroller);
centerPanel.add(msgScroller);
JPanel bottomPanel = new JPanel();
terminateButton = new JButton("Terminate Session");
terminateButton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
if (timer.isRunning())
timer.stop();
else
timer.start();
}
});
sendButton = new JButton("Send");
bottomPanel.add(terminateButton);
bottomPanel.add(sendButton);
contentPane.add(centerPanel, BorderLayout.CENTER);
contentPane.add(bottomPanel, BorderLayout.PAGE_END);
frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
timer = new Timer(1000, timerAction);
timer.start();
}
public static void main(String... args)
{
EventQueue.invokeLater(new Runnable()
{
@Override
public void run()
{
new JTextAreaScroller().displayGUI();
}
});
}
}
Aquí está el resultado de lo mismo:
Estoy trabajando en un proyecto para mi curso universitario. Me preguntaba si alguien sabía cómo agregar un scrollBar a un JTextArea. En este momento tengo la GUI presentada correctamente, lo único que falta es la barra de desplazamiento.
Así es como se ve la GUI. Como puede ver en el segundo TextArea, me gustaría agregar la barra de desplazamiento.
Este es mi código donde creo el panel. Pero nada parece suceder ... t2 es el JTextArea al que quiero agregarlo.
scroll = new JScrollPane(t2);
scroll.setBounds(10,60,780,500);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
¡Cualquier ayuda sería genial, gracias!
La barra de desplazamiento por defecto solo se mostrará cuando el contenido sobrepase el área visible disponible
Puede cambiar esto mediante el método JScrollPane#setVerticalScrollBarPolicy
, pasándolo ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS