Scala #049: EditDone

《前の記事|記事一覧|次の記事》
Scala.use(better, src)


ソースコードの歩き方 #049

EditDone


《関連記事》

■ テキストを入力する


 22:   val textField = new TextField(20) {
 23:     Command.listenTo(this)
 24:   }

テキストを入力すると、Command が TextField に呼応します。

 47:   object Command extends Publisher {
 48:     reactions += {
 49:       case EditDone(source) => 
 50:         val text = source.text
 51:         textArea.append("%s\n" format text)
 52:         textField.selectAll
 53:         textArea.caret.position = textArea.peer.getDocument().getLength()
 54:     }
 55:   }

enter キーを入力すると、イベント EditDone が発生するので、それに反応する処理を記述します。

scala.swing.TextComponent
34	class TextComponent extends Component with Publisher {
35	  override lazy val peer: JTextComponent = new JTextComponent with SuperMixin {}
36	  def text: String = peer.getText
37	  def text_=(t: String) = peer.setText(t)
38	 
39	  class Caret extends Publisher {
40	    def dot: Int = peer.getCaret.getDot
41	    def dot_=(n: Int) { peer.getCaret.setDot(n) }
42	    def mark: Int = peer.getCaret.getMark
43	    def moveDot(n: Int) { peer.getCaret.moveDot(n) }
44	    def visible: Boolean = peer.getCaret.isVisible
45	    def visible_=(b: Boolean) { peer.getCaret.setVisible(b) }
46	    def selectionVisible: Boolean = peer.getCaret.isSelectionVisible
47	    def selectionVisible_=(b: Boolean) { peer.getCaret.setSelectionVisible(b) }
48	    def blinkRate: Int = peer.getCaret.getBlinkRate
49	    def blinkRate_=(n: Int) { peer.getCaret.setBlinkRate(n) }
50	    def color: Color = peer.getCaretColor
51	    def color_=(c: Color) = peer.setCaretColor(c)
52	    def position: Int = peer.getCaretPosition
53	    def position_=(p: Int) = peer.setCaretPosition(p)
54	   
55	    peer.addCaretListener {
56	      new CaretListener {
57	        def caretUpdate(e: CaretEvent) { publish(CaretUpdate(TextComponent.this)) } 
58	      }
59	    }
60	  }
61	 
62	  object caret extends Caret
63	
64	  def editable: Boolean = peer.isEditable
65	  def editable_=(x: Boolean) = peer.setEditable(x)
66	  def cut() { peer.cut() }
67	  def copy() { peer.copy() }
68	  def paste() { peer.paste() }
69	  def selected: String = peer.getSelectedText
70	 
71	  def selectAll() { peer.selectAll() }
72	 
73	  peer.getDocument.addDocumentListener(new DocumentListener {
74	    def changedUpdate(e:DocumentEvent) { publish(new ValueChanged(TextComponent.this)) }
75	    def insertUpdate(e:DocumentEvent) { publish(new ValueChanged(TextComponent.this)) }
76	    def removeUpdate(e:DocumentEvent) { publish(new ValueChanged(TextComponent.this)) }
77	  })
78	}
scala.swing.TextField
32	class TextField(text0: String, columns0: Int) extends TextComponent with TextComponent.HasColumns with Action.Trigger.Wrapper {
33	  override lazy val peer: JTextField = new JTextField(text0, columns0) with SuperMixin 
34	  def this(text: String) = this(text, 0)
35	  def this(columns: Int) = this("", columns)
36	  def this() = this("")
37	
38	  def columns: Int = peer.getColumns
39	  def columns_=(n: Int) = peer.setColumns(n)
40	
41	  /** @see javax.swing.JTextField#getHorizontalAlignment() */
42	  def horizontalAlignment: Alignment.Value = Alignment(peer.getHorizontalAlignment)
43	  /** @see javax.swing.JTextField#setHorizontalAlignment() */
44	  def horizontalAlignment_=(x: Alignment.Value) { peer.setHorizontalAlignment(x.id) }
45	 
46	  private lazy val actionListener = Swing.ActionListener { e =>
47	    publish(EditDone(TextField.this))
48	  }
scala.swing.Swing
21	object Swing {
...
36	  final def ActionListener(f: ActionEvent => Unit) = new ActionListener {
37	    def actionPerformed(e: ActionEvent) { f(e) }
38	  }
scala.swing.event.EditDone
14	case class EditDone(override val source: TextField) extends ValueChanged(source)


関連記事

TOP

Last updated♪2010/10/13