Hey Leute ,
das hört sich jetzt vllt. nach einer dummen Frage an aber eich weiß einfach nicht mehr weiter.Ich habe jetzt schon wirklich viele Lösungsansätze probiert aber nicht klappt so wie es am Ende aussehen soll ;(
Ich hoffe ihr könnt mir helfen :
Mein Problem : Ich will ein scrollbares JTextPane als Ausgabelog nutzen was natürlich stehts den neusten eintrag zeigen soll sich aber ebenso von Hand ziehen lassen soll.So weit zur Theorie.Nun sieht mein Code wie folgt aus:
Schreiben tue ich wie flolgt zum testen:
Hier einmal noch ein Screenshot:
Mann sieht gut das die Scrollbar oben ist aber standartmäßig unten sein sollte um die aktuellen infos zu zeigen.
das hört sich jetzt vllt. nach einer dummen Frage an aber eich weiß einfach nicht mehr weiter.Ich habe jetzt schon wirklich viele Lösungsansätze probiert aber nicht klappt so wie es am Ende aussehen soll ;(
Ich hoffe ihr könnt mir helfen :
Mein Problem : Ich will ein scrollbares JTextPane als Ausgabelog nutzen was natürlich stehts den neusten eintrag zeigen soll sich aber ebenso von Hand ziehen lassen soll.So weit zur Theorie.Nun sieht mein Code wie folgt aus:
Java:
package Utilities;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
@SuppressWarnings("serial")
public class ConsoleLog extends JPanel{
private JTextPane consolelog_Pane;
private JScrollPane consolelog_ScrollPane;
private SimpleAttributeSet err;
public ConsoleLog() {
setLayout(new BorderLayout());
consolelog_Pane = new JTextPane();
consolelog_Pane.setEditable(false);
consolelog_ScrollPane = new JScrollPane(consolelog_Pane);
// DefaultCaret caret = (DefaultCaret) consolelog_Pane.getCaret();
// caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
// consolelog_ScrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
// public void adjustmentValueChanged(AdjustmentEvent e) {
// e.getAdjustable().setValue(e.getAdjustable().getMaximum());
// }
// });
add(consolelog_ScrollPane);
err = new SimpleAttributeSet();
StyleConstants.setForeground(err, Color.RED);
}
public void write(String text) throws BadLocationException{
StyledDocument doc = consolelog_Pane.getStyledDocument();
doc.insertString(doc.getLength(), text + " \n", null );
// consolelog_ScrollPane.revalidate();
// System.out.println(consolelog_ScrollPane.getVerticalScrollBar().getMaximum());
// consolelog_ScrollPane.getVerticalScrollBar().setValue(100);
//consolelog_Pane.setCaretPosition(consolelog_Pane.getStyledDocument().getLength());
}
public void errwrite(String text) throws BadLocationException{
StyledDocument doc = consolelog_Pane.getStyledDocument();
doc.insertString(doc.getLength(), text + " \n", err );
// consolelog_ScrollPane.revalidate();
// consolelog_ScrollPane.getVerticalScrollBar().setValue(100);
//consolelog_ScrollPane.getVerticalScrollBar().setValue(consolelog_ScrollPane.getVerticalScrollBar().getMaximum());
//consolelog_Pane.setCaretPosition(consolelog_Pane.getStyledDocument().getLength());
}
}
Schreiben tue ich wie flolgt zum testen:
Java:
try {
for (int i = 0;i < 20;i++){
consolelog.write("test"+i);
}
consolelog.errwrite("test");
} catch (BadLocationException e) {
e.printStackTrace();
}
Hier einmal noch ein Screenshot:
Mann sieht gut das die Scrollbar oben ist aber standartmäßig unten sein sollte um die aktuellen infos zu zeigen.