2011-01-15 4 views
2

Как бы я перешел на перенос текста на JTextpane?Переключение обтекания текста в JTextpane

public JFrame mainjFrame = new JFrame("Text Editor"); 
    public JTextPane mainJTextPane = new JTextPane(); 
     public JScrollPane mainJScrollPane = new JScrollPane(mainJTextPane); 
     mainjFrame.add(mainJScrollPane); 
+0

Если вы не хотите, обертывание, почему бы вам не использовать JTextField? –

+1

@Stefanos Kalantzis Я не верю, что JTextField предоставляет столько способностей, как JTextpane. – GlassGhost

+0

Поскольку JTextField является однострочным текстовым компонентом, перенос слов там не имеет смысла. Вероятно, вы имеете в виду 'JTextArea'. –

ответ

10

См. No Wrap Text Pane.

Edit:

Ну, если вы хотите, чтобы переключить поведение, то вам также необходимо, чтобы переключить значение getScrollableTracksViewportWidth(). См. Scrollable Panel. Вы должны иметь возможность переключаться между FIT и STRETCH.

+0

+1 для очень хорошего ответа, который сработал; однако я пытаюсь переключить перенос текста и обновил вопрос. Извините за плохой вопрос. – GlassGhost

9
package test; 

import java.awt.BorderLayout; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextPane; 

public class TestVisual extends JFrame { 

    private boolean wrapped; 
    private JButton toggleButton = null; 
    private JTextPane textPane = null; 
    private JPanel noWrapPanel = null; 
    private JScrollPane scrollPane = null; 

    public TestVisual() { 
     super(); 
     init(); 
    } 

    public void init() { 
     this.setSize(300, 200); 
     this.setLayout(new BorderLayout()); 

     wrapped = false; 

     textPane = new JTextPane(); 
     noWrapPanel = new JPanel(new BorderLayout()); 
     noWrapPanel.add(textPane); 

     scrollPane = new JScrollPane(noWrapPanel); 

     toggleButton = new JButton("wrap"); 
     toggleButton.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent e) { 
       if (wrapped == true){ 
        scrollPane.setViewportView(noWrapPanel); 
        noWrapPanel.add(textPane); 
        toggleButton.setText("wrap"); 
        wrapped = false; 
       }else { 
        scrollPane.setViewportView(textPane); 
        toggleButton.setText("unWrap"); 
        wrapped = true; 
       } 
      } 
     }); 

     this.add(scrollPane, BorderLayout.CENTER); 
     this.add(toggleButton, BorderLayout.NORTH); 
    } 
} 


Я не знаю никакого другого пути для того, что вы ищете ..

Но это работает хорошо.


(на основе ответа camickr .. В +1)

+0

вы можете заменить первые 5 импортов на «import javax.swing. *; » – GlassGhost

+1

Я использовал импорт затмений. :) –

Смежные вопросы