==[[JTextComponent 3]]==
*ドキュメントの変更を感知
*キャレットの状態を感知
import java.awt.BorderLayout;
import java.awt.Rectangle[[R]]ectangle;
import javax.swing.[[JFrame]];
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities[[Swing]]Utilities;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
*/
public class JTextTest3 {
private [[JFrame ]] frame;
private JTextArea txtArea;
private JLabel changeStats;
private void createUI() {
frame = new [[JFrame]]("TextTest3"); frame.setDefaultCloseOperation([[JFrame]].EXIT_ON_CLOSE);
caretStats = new CaretListenerLabel("caret:");
changeStats = new JLabel("change:");
JPanel statusPanel = new JPanel(new BorderLayout());
statusPanel.add(changeStats, BorderLayout.CENTERCENTE[[R]]);
statusPanel.add(caretStats, BorderLayout.SOUTH);
JPanel basePanel = new JPanel(new BorderLayout());
basePanel.add(new JScrollPane(txtArea), BorderLayout.CENTERCENTE[[R]]);
basePanel.add(statusPanel, BorderLayout.SOUTH);
}
public static void main(String[] args) {
SwingUtilities[[Swing]]Utilities.invokeLater( new Runnable[[R]]unnable(){
public void run() {
JTextTest3 jft = new JTextTest3();
int dot = e.getDot();
// モデル内の指定された位置を、ビュー座標系内の場所に変換
Rectangle [[R]]ectangle rect = txtArea.modelToView(dot);
caretStats.setText("caret: text pos=" + dot
+ " view location [" + rect.x + "," + rect.y + "]");