JScrollPane と組み合わせて JTextPane を使用しています。JTextPane には、読むためにスクロールが必要な大量のテキストが事前に入力されています。私が抱えている問題は、ビューポートがデフォルトでテキストの一番下の部分を表示していることです。つまり、JFrame が開いたり更新されたりすると、垂直スクロールバーのノブが (上部ではなく) 下部に配置されます。以前に JScrollPane を使用したとき、この問題は発生していません。
これは、スクロール ペインを作成するために使用したコードです。
JTabbedPane jtpCentre = new JTabbedPane();
JPanel panHexagramText = new JPanel();
panHexagramText.setBorder(bor);
txpHexagramText = new JTextPane();
txpHexagramText.setPreferredSize(new Dimension(595, 300));
scrHTPanel = new JScrollPane(txpHexagramText,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrHTPanel.setPreferredSize(new Dimension(595,300));
panHexagramText.add(scrHTPanel);
テキスト ペインに入力するために使用するコードは、別のクラスにあります。
try {
String strLineText = this.createLineTextString(strLineTextData);
String[] strFullText = {"Hexagram Text\n\n",
strTranslationData[0][1],
"\n\nLine Text",
strLineText};
String[] strStyles = {"bold", "regular", "bold", "regular"};
gui.txpHexagramText.setText(null);
StyledDocument sDoc = gui.txpHexagramText.getStyledDocument();
this.addStylesToDoc(sDoc);
for (int i = 0; i < strFullText.length; i++) {
sDoc.insertString(sDoc.getLength(), strFullText[i],
sDoc.getStyle(strStyles[i]));
}
} catch (Exception ex) {// Trap error if there is no translation available.
gui.txpHexagramText.setText(str);
}
なぜこれを行っているのか、どうすれば修正できるのかお聞きしたいです。
どうもありがとう。