Java by API/javax.swing.text/NavigationFilter

Материал из Java эксперт
Версия от 14:12, 31 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

implements NavigationFilter

 
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.text.NavigationFilter;
import javax.swing.text.Position;
public class MainClass {
  public static void main(String args[]) throws Exception {
    final String START_STRING = "Start\n";
    final int START_STRING_LENGTH = START_STRING.length();
    JFrame frame = new JFrame("Navigation Example");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JTextArea textArea = new JTextArea(START_STRING);
    textArea.setCaretPosition(START_STRING_LENGTH);
    JScrollPane scrollPane = new JScrollPane(textArea);
    frame.add(scrollPane, BorderLayout.CENTER);
    NavigationFilter filter = new NavigationFilter() {
      public void setDot(NavigationFilter.FilterBypass fb, int dot, Position.Bias bias) {
        if (dot < START_STRING_LENGTH) {
          fb.setDot(START_STRING_LENGTH, bias);
        } else {
          fb.setDot(dot, bias);
        }
      }
      public void moveDot(NavigationFilter.FilterBypass fb, int dot, Position.Bias bias) {
        if (dot < START_STRING_LENGTH) {
          fb.setDot(START_STRING_LENGTH, bias);
        } else {
          fb.setDot(dot, bias);
        }
      }
    };
    textArea.setNavigationFilter(filter);
    frame.setSize(250, 150);
    frame.setVisible(true);
  }
}





NavigationFilter.FilterBypass.setDot(int dot, Bias bias)

 

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.text.NavigationFilter;
import javax.swing.text.Position;
public class Main {
  public static void main(String args[]) {
    JFrame frame = new JFrame("Navigation Example");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JTextArea textArea = new JTextArea();
    JScrollPane scrollPane = new JScrollPane(textArea);
    frame.add(scrollPane, BorderLayout.CENTER);
    NavigationFilter filter = new NavigationFilter() {
      public void setDot(NavigationFilter.FilterBypass fb, int dot, Position.Bias bias) {
        System.out.println("Setting: " + dot);
        fb.setDot(dot, bias);
      }
      public void moveDot(NavigationFilter.FilterBypass fb, int dot, Position.Bias bias) {
        System.out.println("Moving: " + dot);
        fb.setDot(dot, bias);
      }
    };
    textArea.setNavigationFilter(filter);
    frame.setSize(250, 150);
    frame.setVisible(true);
  }
}