gpt4 book ai didi

java - 为什么我的 Java Swing JScrollPane 一直滚动到顶部?

转载 作者:行者123 更新时间:2023-12-04 05:58:16 25 4
gpt4 key购买 nike

我正在开发一个小型计算器小部件,用于保存计算的运行日志。每次添加新条目时,它应该滚动到日志的底部。这部分似乎工作正常。
问题是,当我按下没有添加到日志的计算器按钮时,日志 Pane 总是滚动回顶部,滚动条消失。我怎样才能让它不这样做?

添加到日志的代码是:

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

最佳答案

您认为导致问题的代码甚至没有引用 logArea ,那么你为什么会认为这会导致问题?

您不需要使用 scrollRectToVisible(...) 方法。 setCaretPosition(...) 应该可以解决问题。尽管您应该获取文档的长度并在更新文档后调用该方法。

退房 Text Area Scrolling想要查询更多的信息。

编辑:

我也没有看到任何改变文本区域可编辑性的理由。

关于java - 为什么我的 Java Swing JScrollPane 一直滚动到顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9246317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com