es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La barra de desplazamiento de la interfaz gráfica de usuario no está funcionando como deseo.

Pregunta

Estoy intentando que esta área de texto en esta GUI tenga un scroll, pero cuando trato de agregarlo, el área de texto cubre la barra de desplazamiento o viceversa. No hay errores. Código:
“`java
// Área de Texto en el Centro
JTextArea ta = new JTextArea ( 16, 58 );
ta.setEditable ( false ); // establece que el área de texto no sea editable
JScrollPane scroll = new JScrollPane ( ta );
scroll.setVerticalScrollBarPolicy ( ScrollPaneConstants.VERTICAL<em>SCROLLBAR</em>ALWAYS );</p>

<pre><code> send.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent send) {
String data = tf.getText();
ta.append("Tu: " + data + "\n");
tf.setText("");
System.out.println(data);
}
});

//Añadiendo Componentes al Marco.
frame.getContentPane().add(BorderLayout.SOUTH, panel);
frame.getContentPane().add(BorderLayout.CENTER, ta);
frame.add(ta);
ta.add(scroll);
frame.setVisible(true);
</code></pre>

“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás teniendo problemas para hacer que aparezca la barra de desplazamiento en el área de texto. Para asegurarte de que aparezca la barra de desplazamiento, debes agregar el JScrollPane al marco en lugar del JTextArea. También debes establecer la política VERTICAL_SCROLLBAR_ALWAYS para el JScrollPane antes de agregarlo al marco. Tu código debería verse así:

            // Área de texto en el centro
            JTextArea ta = new JTextArea (16, 58);
            ta.setEditable (false); // Hacer que el área de texto no sea editable
            JScrollPane scroll = new JScrollPane (ta);
            scroll.setVerticalScrollBarPolicy (ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    
        send.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent send) {
                String data = tf.getText();
                ta.append("Tú: " + data + "\n");
                tf.setText("");
                System.out.println(data);
            }
        });
    
        // Agregar componentes al marco.
        frame.getContentPane().add(BorderLayout.SOUTH, panel);
        frame.getContentPane().add(BorderLayout.CENTER, scroll);
        frame.setVisible(true);
    

Comments are closed.