quitar agregar java swing jpanel jscrollpane jtextarea

quitar - Java: agregar desplazamiento en el área de texto



jtextarea scroll (3)

Después de agregar JTextArea en JScrollPane aquí:

scroll = new JScrollPane(display);

No necesita agregarlo nuevamente en otro contenedor como lo hace:

middlePanel.add(display);

Solo elimine esa última línea de código y funcionará bien. Me gusta esto:

middlePanel=new JPanel(); middlePanel.setBorder(new TitledBorder(new EtchedBorder(), "Display Area")); // create the middle panel components display = new JTextArea(16, 58); display.setEditable(false); // set textArea non-editable scroll = new JScrollPane(display); scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); //Add Textarea in to middle panel middlePanel.add(scroll);

JScrollPane es simplemente otro contenedor que coloca barras de desplazamiento alrededor de su componente cuando es necesario y también tiene su propio diseño. Todo lo que necesita hacer cuando desea envolver cualquier elemento en un desplazamiento simplemente páselo al constructor JScrollPane:

new JScrollPane( myComponent )

o establecer una vista como esta:

JScrollPane pane = new JScrollPane (); pane.getViewport ().setView ( myComponent );

Adicional:

Aquí está el ejemplo completamente funcional ya que aún no lo conseguiste funcionando:

public static void main ( String[] args ) { JPanel middlePanel = new JPanel (); middlePanel.setBorder ( new TitledBorder ( new EtchedBorder (), "Display Area" ) ); // create the middle panel components JTextArea display = new JTextArea ( 16, 58 ); display.setEditable ( false ); // set textArea non-editable JScrollPane scroll = new JScrollPane ( display ); scroll.setVerticalScrollBarPolicy ( ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS ); //Add Textarea in to middle panel middlePanel.add ( scroll ); // My code JFrame frame = new JFrame (); frame.add ( middlePanel ); frame.pack (); frame.setLocationRelativeTo ( null ); frame.setVisible ( true ); }

Y esto es lo que obtienes:

¿Cómo puedo agregar la barra de desplazamiento a mi área de texto? He intentado con este código pero no está funcionando.

middlePanel=new JPanel(); middlePanel.setBorder(new TitledBorder(new EtchedBorder(), "Display Area")); // create the middle panel components display = new JTextArea(16, 58); display.setEditable(false); // set textArea non-editable scroll = new JScrollPane(display); scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); //Add Textarea in to middle panel middlePanel.add(scroll); middlePanel.add(display);

Gracias


Intenta agregar estas dos líneas a tu código. Espero que funcione. Funcionó para mí :)

display.setLineWrap(true); display.setWrapStyleWord(true);

La imagen de salida se muestra a continuación


Mi suposición ingenua era que el tamaño del panel de desplazamiento se determinará automáticamente ...

La única solución que realmente funcionó para mí fue explotar explícitamente los límites de JScrollPane :

import javax.swing.*; public class MyFrame extends JFrame { public MyFrame() { setBounds(100, 100, 491, 310); getContentPane().setLayout(null); JTextArea textField = new JTextArea(); textField.setEditable(false); String str = ""; for (int i = 0; i < 50; ++i) str += "Some text/n"; textField.setText(str); JScrollPane scroll = new JScrollPane(textField); scroll.setBounds(10, 11, 455, 249); // <-- THIS getContentPane().add(scroll); setLocationRelativeTo ( null ); } }

Tal vez ayudará a algunos futuros visitantes :)