我正在開發一個保存計算運行日誌的小型計算器小部件。每次添加新條目時,都應該滾動到日誌的底部。這部分似乎工作正常。 問題是,當我按下不添加到日誌的計算器按鈕時,日誌窗格始終滾動回頂部,滾動條消失。我怎麼能阻止它做到這一點?爲什麼我的Java Swing JScrollPane繼續滾動到頂部?
,增加了日誌的代碼是:
private JTextPane logArea; //This is placed inside a JScrollPane
private void log(String m, SimpleAttributeSet a) {
int len = logArea.getDocument().getLength();
logArea.setEditable(true);
logArea.setCaretPosition(len);
logArea.setCharacterAttributes(a, false);
logArea.replaceSelection(m);
logArea.scrollRectToVisible(new Rectangle(0,logArea.getBounds(null).height,1,1));
logArea.setEditable(false);
}
,這似乎與滾動搞亂的代碼是:
private void addDigit(char digit) {
if (clearDisplayBeforeDigit) {
clearNumDisplay();
}
if (numInDisplay.getText().length() < maxNumDigits) {
if (digit == '.') { //Point
if (!hasPoint) { //Only one point allowed
hasPoint = true;
String newText = numInDisplay.getText() + ".";
numInDisplay.setText(newText);
}
} else { //New digit
String newText = numInDisplay.getText() + digit;
numInDisplay.setText(newText);
}
}
}
爲了儘快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2012-02-12 04:03:02
從哪裏調用'log'?您也可以考慮使用'JScrollPane'的'JScrollBar'滾動到底部。 ([鏈接](http://stackoverflow.com/a/5150437/758280),我不知道這是否會解決您的問題,但它不能傷害嘗試。) – Jeffrey 2012-02-12 04:06:37