3 Stimmen

Umschalten des Textumbruchs in einem JTextPane

Wie kann ich den Textumbruch in einem JTextpane umschalten?

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

0 Stimmen

Wenn Sie keine Umwicklung möchten, warum verwenden Sie dann nicht JTextField ?

1 Stimmen

@Stefanos Kalantzis Ich glaube nicht, dass JTextField so viele Styling-Möglichkeiten bietet wie JTextpane.

1 Stimmen

Da JTextField ein einzelzeiliges Textkomponent ist, ist ein automatischer Zeilenumbruch dort nicht sinnvoll. Wahrscheinlich meinen Sie JTextArea.

11voto

camickr Punkte 315810

Siehe No Wrap Text Pane.

Bearbeiten:

Nun, wenn Sie das Verhalten umschalten möchten, müssten Sie auch den Wert von getScrollableTracksViewportWidth() umschalten. Siehe Scrollable Panel. Sie sollten zwischen FIT und STRETCH umschalten können.

1 Stimmen

+1 für eine sehr gute Antwort, die funktioniert hat; jedoch versuche ich, den Textumbruch umzuschalten, und habe die Frage aktualisiert. Entschuldigung für die schlechte Frage.

10voto

Stefanos Kalantzis Punkte 1570
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);
    }
}

Ich kenne keine andere Möglichkeit dafür, wonach du suchst.

Aber das funktioniert gut.

( Basierend auf der Antwort von camickr.. +1 )

0 Stimmen

Sie können die ersten 5 Importe durch "import javax.swing.*;" ersetzen.

1 Stimmen

Ich habe Eclipse verwendet, um die Imports zu reparieren. :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X