| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「JTextComponent 3」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==JTextComponent 3== *ドキュメントの変更を感知 *キャレットの状態を感知 File:0742_jtext3.jpg import java.awt.BorderLayout; import j…」)
 
 
1行目: 1行目:
==JTextComponent 3==
+
==[[JTextComponent 3]]==
 
*ドキュメントの変更を感知  
 
*ドキュメントの変更を感知  
 
*キャレットの状態を感知  
 
*キャレットの状態を感知  
6行目: 6行目:
  
 
  import java.awt.BorderLayout;
 
  import java.awt.BorderLayout;
  import java.awt.Rectangle;
+
  import java.awt.[[R]]ectangle;
 
   
 
   
  import javax.swing.JFrame;
+
  import javax.swing.[[JFrame]];
 
  import javax.swing.JLabel;
 
  import javax.swing.JLabel;
 
  import javax.swing.JPanel;
 
  import javax.swing.JPanel;
 
  import javax.swing.JScrollPane;
 
  import javax.swing.JScrollPane;
 
  import javax.swing.JTextArea;
 
  import javax.swing.JTextArea;
  import javax.swing.SwingUtilities;
+
  import javax.swing.[[Swing]]Utilities;
 
  import javax.swing.event.CaretEvent;
 
  import javax.swing.event.CaretEvent;
 
  import javax.swing.event.CaretListener;
 
  import javax.swing.event.CaretListener;
23行目: 23行目:
 
   */
 
   */
 
  public class JTextTest3 {
 
  public class JTextTest3 {
     private JFrame frame;
+
     private [[JFrame]] frame;
 
     private JTextArea txtArea;
 
     private JTextArea txtArea;
 
     private JLabel changeStats;
 
     private JLabel changeStats;
29行目: 29行目:
 
      
 
      
 
     private void createUI() {
 
     private void createUI() {
         frame = new JFrame("TextTest3");
+
         frame = new [[JFrame]]("TextTest3");
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
         frame.setDefaultCloseOperation([[JFrame]].EXIT_ON_CLOSE);
 
          
 
          
 
         caretStats  = new CaretListenerLabel("caret:");
 
         caretStats  = new CaretListenerLabel("caret:");
 
         changeStats = new JLabel("change:");
 
         changeStats = new JLabel("change:");
 
         JPanel statusPanel = new JPanel(new BorderLayout());
 
         JPanel statusPanel = new JPanel(new BorderLayout());
         statusPanel.add(changeStats, BorderLayout.CENTER);
+
         statusPanel.add(changeStats, BorderLayout.CENTE[[R]]);
 
         statusPanel.add(caretStats, BorderLayout.SOUTH);
 
         statusPanel.add(caretStats, BorderLayout.SOUTH);
 
          
 
          
41行目: 41行目:
 
   
 
   
 
         JPanel basePanel = new JPanel(new BorderLayout());
 
         JPanel basePanel = new JPanel(new BorderLayout());
         basePanel.add(new JScrollPane(txtArea), BorderLayout.CENTER);
+
         basePanel.add(new JScrollPane(txtArea), BorderLayout.CENTE[[R]]);
 
         basePanel.add(statusPanel, BorderLayout.SOUTH);
 
         basePanel.add(statusPanel, BorderLayout.SOUTH);
 
          
 
          
53行目: 53行目:
 
     }
 
     }
 
     public static void main(String[] args) {
 
     public static void main(String[] args) {
         SwingUtilities.invokeLater(
+
         [[Swing]]Utilities.invokeLater(
                 new Runnable(){
+
                 new [[R]]unnable(){
 
                     public void run() {
 
                     public void run() {
 
                         JTextTest3 jft = new JTextTest3();
 
                         JTextTest3 jft = new JTextTest3();
89行目: 89行目:
 
                 int dot = e.getDot();
 
                 int dot = e.getDot();
 
                 // モデル内の指定された位置を、ビュー座標系内の場所に変換
 
                 // モデル内の指定された位置を、ビュー座標系内の場所に変換
                 Rectangle rect = txtArea.modelToView(dot);
+
                 [[R]]ectangle rect = txtArea.modelToView(dot);
 
                 caretStats.setText("caret: text pos=" + dot  
 
                 caretStats.setText("caret: text pos=" + dot  
 
                               + " view location [" + rect.x + "," + rect.y + "]");
 
                               + " view location [" + rect.x + "," + rect.y + "]");

2020年2月16日 (日) 04:28時点における最新版

JTextComponent 3

  • ドキュメントの変更を感知
  • キャレットの状態を感知

0742 jtext3.jpg

import java.awt.BorderLayout;
import java.awt.Rectangle;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

/**
 * @see http://java.sun.com/docs/books/tutorial/uiswing/components/generaltext.html
 */
public class JTextTest3 {
    private JFrame frame;
    private JTextArea txtArea;
    private JLabel changeStats;
    private CaretListenerLabel caretStats;
    
    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.CENTER);
        statusPanel.add(caretStats, BorderLayout.SOUTH);
        
        txtArea = new JTextArea(10, 30);

        JPanel basePanel = new JPanel(new BorderLayout());
        basePanel.add(new JScrollPane(txtArea), BorderLayout.CENTER);
        basePanel.add(statusPanel, BorderLayout.SOUTH);
        
        txtArea.getDocument().addDocumentListener(
                new MyDocumentListener());
        txtArea.addCaretListener(caretStats);
        
        frame.getContentPane().add(basePanel);
        frame.pack();
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(
                new Runnable(){
                    public void run() {
                        JTextTest3 jft = new JTextTest3();
                        jft.createUI();
                    }
                }
        );
    }
    /**
     * ドキュメントの変更を感知
     */
    class MyDocumentListener implements DocumentListener {
        public void changedUpdate(DocumentEvent e) {
            changeStats.setText("chage:chage");
        }
        public void insertUpdate(DocumentEvent e) {
            changeStats.setText("change:insert");   
        }
        public void removeUpdate(DocumentEvent e) {
            changeStats.setText("change:remove");
        }
    }
    /**
     * キャレットの状態を感知
     */
    @SuppressWarnings("serial")
    class CaretListenerLabel extends JLabel
                                implements CaretListener {
        public CaretListenerLabel(String label) {
            super(label);
        }
        public void caretUpdate(CaretEvent e) {
            try {
                int dot = e.getDot();
                // モデル内の指定された位置を、ビュー座標系内の場所に変換
                Rectangle rect = txtArea.modelToView(dot);
                caretStats.setText("caret: text pos=" + dot 
                              + " view location [" + rect.x + "," + rect.y + "]");
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }
}