JTextPane verändert die Position des JScrollbars VorfahrJava

Java-Forum
Anonymous
 JTextPane verändert die Position des JScrollbars Vorfahr

Post by Anonymous »

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;
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post