JTextPane verändert die Position des JScrollbars Vorfahr

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: JTextPane verändert die Position des JScrollbars Vorfahr

by Anonymous » 05 Mar 2025, 13:35

Ich muss programmgesteuert Text auf eine jTextPane ohne die Ansicht festlegen - das heißt, ich möchte, dass es seinen übergeordneten JScrollpane -Scroll -Balken alleine hinterlässt.
Leider ist es nicht das, was passiert. Wenn Sie die Implementierung der Textkomponente in JTextField ändern, bleibt die Position der Bildlaufleiste gleich.

Code: Select all

package demos.text.field;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.text.JTextComponent;
import java.awt.BorderLayout;
import java.awt.Component;

public class TextComponentDemo {

//    static JTextComponent textComponent = new JTextField(); // keeps the scroll bar in place
static JTextComponent textComponent = new JTextPane(); // fiddles with the scroll bar

public static void main(String[] args) {
JScrollPane scroller = createScroller();
JFrame frame = new JFrame("Text field demo");
frame.setContentPane(scroller);
frame.setLocationRelativeTo(null);
frame.setSize(200, 75); // to keep the text component hidden
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
}

private static JScrollPane createScroller() {
Component mainPanel = createMainPanel();
JScrollPane scrollPane = new JScrollPane(mainPanel);
return scrollPane;
}

private static JPanel createMainPanel() {
JPanel panel = new JPanel(new BorderLayout());
panel.add(createButtonPanel());
panel.add(textComponent, BorderLayout.SOUTH);
return panel;
}

private static JPanel createButtonPanel() {
JPanel panel = new JPanel();
panel.add(createInsertButton());
panel.add(createClearButton());
return panel;
}

private static JButton createInsertButton() {
JButton button = new JButton("Insert");
button.addActionListener(e -> textComponent.setText("Sample text"));
return button;
}

private static JButton createClearButton() {
JButton button = new JButton("Clear");
button.addActionListener(e -> textComponent.setText(null));
return button;
}
}

Top