无法使用滚动条将“读者光标”定位在Java“帮助窗口”的顶部,而不是屏幕文本

时间:2014-01-11 22:24:40

标签: java swing jscrollpane jtextarea

我有一个“帮助”按钮,当单击它时,会打开一个JFrame窗口,并显示从文件中读取的多行文本。处理完整个帮助文件后,窗口中只显示文件的中间部分。滚动条位于其范围的中间。这是一个模拟窗口,模拟显示所有80行的第33行到第52行:

enter image description here

我希望第一行在处理完最后一行后可见,而无需用户向上滚动。 怎么样?我查看了名为Helpframe的JFrame的方法和属性,但似乎都没有适用。

以下是涉及的3个类的相关代码:

public class Help extends JFrame{

  static String [] lines = null;

  public     Help() { 

    lines = new String[]{
                     " ... blah blah blah blah ... ", ... } // 100 more strings follow
} // end of class Help

public class UserIO extends JFrame {  

  private void btnHelpMouseClicked(java.awt.event.MouseEvent evt) {

    HelpOutput helpFrame = new HelpOutput();
    Help       help      = new Help();

    for (String line : Help.lines)
      helpFrame.appendOutput(" " + line);

编辑和解决方案

    HelpOutput.txaOutput.setCaretPosition(0);

for之后添加了该行;问题解决了。

  } ...
} // end of class UserIO

public class HelpOutput extends JFrame {

    JScrollPane jScrollPane1 = new JScrollPane();
    JTextArea txaOutput      = new JTextArea();
    jScrollPane1.setViewportView(txaOutput);
...
  public void appendOutput(String s){

    txaOutput.append(s + "\n");
  } ...    
} // end of class HelpOutput

我在另一个程序中解决了类似的问题,在这种情况下使用....selectAll()将“读者的光标”定位在窗口的底部,这是理想的,因为底线是摘要。但即使这种方法可用,我也不想用当前的程序来做到这一点。

1 个答案:

答案 0 :(得分:0)

HelpOutput.txaOutput.setCaretPosition(0);

for和问题解决后添加了。