Dúvida barra de rolagem horizontal

5 respostas
F

Não consigo colocar barra de rolagem horizontal em um JTextPane:

Abaixo está o código, mas só aparece barra vertical a horizontal não aparece.

public class A extends JFrame {

	private static final long serialVersionUID = 1L;

	private JPanel jContentPane = null;

	private JTextPane jTextPaneb = null;

	private JScrollPane jScrollPane = null;

	/**
	 * This is the default constructor
	 */
	public A() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(300, 278);
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getJScrollPane(), null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jTextPaneb	
	 * 	
	 * @return javax.swing.JTextPane	
	 */
	private JTextPane getJTextPaneb() {
		if (jTextPaneb == null) {
			jTextPaneb = new JTextPane();
			jTextPaneb.setText("eu moro na casa \n" +
					"amarela\n" +
					"desde que nasci");
			SimpleAttributeSet redAttr = new SimpleAttributeSet();  
			//StyleConstants.setForeground(redAttr, Color.RED);  
			 StyleConstants.setBackground(redAttr, Color.YELLOW);  
			  
			jTextPaneb.getStyledDocument().setCharacterAttributes(0, 10, redAttr, true);  

		}
		return jTextPaneb;
	}

	/**
	 * This method initializes jScrollPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane();
			jScrollPane.setBounds(new Rectangle(18, 130, 53, 91));
			jScrollPane.setViewportView(getJTextPaneb());
			
			
		}
		return jScrollPane;
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"

5 Respostas

O_Monge

jScrollPane = new JScrollPane(getJTextPaneb());

F

jScrollPane = new JScrollPane(getJTextPaneb());

Quando coloco essa linha desaparece o JEditoPane. Aí nem com barra de rolagem, nem sem.

Rummenigge

O JTextPane tem a quebra de linha automática, por isso não aparece a ScrollBar horizontal, não sei como tirar, mas acredido que seja com TextLayout.
O JTextArea tem o método setLineWrap(), é só colocar false.

E
JTextPane textPane = new JTextPane() {

            @Override
            public boolean getScrollableTracksViewportWidth() {
                return (getSize().width < getParent().getSize().width);
            }

            @Override
            public void setSize(Dimension d) {
                if (d.width < getParent().getSize().width) {
                    d.width = getParent().getSize().width;
                }
                super.setSize(d);
            }
        };
E
JTextPane textPane = new JTextPane() {

            @Override
            public boolean getScrollableTracksViewportWidth() {
                Component parent = this.getParent();
                ComponentUI uiC = this.getUI();
                return (uiC.getPreferredSize(this).width <= parent.getSize().width);
            }

            @Override
            public void setSize(Dimension d) {
                if (d.width < getParent().getSize().width) {
                    d.width = getParent().getSize().width;
                }
                super.setSize(d);
            }
        };
Criado 26 de abril de 2011
Ultima resposta 4 de ago. de 2012
Respostas 5
Participantes 4