很長一段時間以來,我一直在光標位於我的JTextArea
的底部,名爲txaOutput
,在填入JScrollPane
之後,儘管我希望它定位於TOP。如何將光標移到JScrollPane中的JTextArea的頂部
我找到的唯一幫助是指將插入位置設置爲0(例如,txaOutput.setCaretPosition(0);
),我從未想過如何正確工作。
今天我只是通過各種可能的方法去進行JTextArea
終於發現,在此之前填充它,此行似乎做什麼,我需要:
txaOutput.insert(" ", 1);
肯定這是不是最好的或者唯一的辦法。
下面是文本區域類:
package masterwords;
import gbl.GBConstraints;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;
import javax.swing.WindowConstants;
public class HelpOutput extends JFrame {
private JScrollPane scrPnl;
private JTextArea txaOutput;
public HelpOutput() /* constructor */ {
scrPnl = new JScrollPane();
txaOutput = new JTextArea();
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
scrPnl.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
scrPnl.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrPnl.setViewportBorder(BorderFactory.createEtchedBorder());
scrPnl.setAutoscrolls(false);
scrPnl.setPreferredSize(new Dimension(500, 555));
txaOutput.setFont(new Font("Courier New", 0, 14));
scrPnl.setViewportView(txaOutput);
setLayout(new GridBagLayout());
add(scrPnl, new GBConstraints(0,0).ipad(200, 300).spanX(100).spanY(90));
txaOutput.insert(" ", 1); // ********** WITHOUT THIS CURSOR IS AT BOTTOM
setVisible(true);
pack();
}
public void appendHelp(String s){
txaOutput.append(s);
}
}
下面是我怎麼總是叫,但它從來沒有工作,直到將符合上述************:
private void btnHelpActionPerformed (ActionEvent evt) {
HelpOutput helpOutput = new HelpOutput();
Scanner sc = openHelp();
while(sc.hasNext())
helpOutput.appendHelp(sc.next());
// txaOutput.setCaretPosition(0); // THIS DOES NOTHING so commented out!!!
}
在添加所有************** s的行之前,別無其他我嘗試將光標置於文本區域的頂部 - 始終是底部。
我該做什麼?我所做的似乎是一個混亂。
*編輯,由於JAVANATOR *
重命名變量txaOutput
到txaHelpOutput
;問題解決了。新的關鍵線路:
private void btnHelpActionPerformed (ActionEvent evt) {
HelpOutput helpOutput = new HelpOutput();
Scanner sc = openHelp();
while(sc.hasNext())
helpOutput.appendHelp(sc.next());
txaHelpOutput.setCaretPosition(0);
// ^^^^
}
public class HelpOutput extends JFrame {
private JTextArea txaHelpOutput;
// ^^^^
public HelpOutput() /* constructor */ {
txaHelpOutput = new JTextArea();
// ^^^^
scrPnl.setViewportView(txaHelpOutput);
// ^^^^
// LOSE THIS LINE!! txaHelpOutput.insert(" ", 1);
}
請發佈一個可運行的示例。 – 2014-11-14 22:01:11