目次へ

解答例 - 実習課題3 - 10.テキスト・コンポーネント

(実習課題3)

以下のプログラムを作成しなさい。

  • ウィンドウに含まれるコンポーネントはテキストフィールド1つ。そのテキストフィールドが持つ特徴は以下のとおり。
    • 4文字までしか入力する事ができない。
    • 「a」を入力しようとすると、「b」が入力される。
    • 文字を削除しようとすると、その左となりの文字が削除される。
  • 「Document」インタフェースを利用して作成する事。
  • (ヒント)「remove」メソッドを実装する事。

解答例

/**
 * DocumentExample.java
 * TECHSCORE Javaユーザインタフェース10章 実習課題3
 *
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */

package com.techscore.ui.chapter10.exercise3;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class DocumentExample extends JFrame {

    private JTextField textField;
    private MyDocument doc;

    public DocumentExample() {
        super("DocumentExample");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        //テキストフィールドを作成
        doc = new MyDocument();
        textField = new JTextField(doc, "", 5);
        getContentPane().add(textField, BorderLayout.CENTER);

        pack();
    }

    public class MyDocument extends PlainDocument {

        public MyDocument() {
            super();
        }

        public void insertString(int offset, String text, AttributeSet attributes) throws BadLocationException {
            text = text.replace('a', 'b');
            text = text.replace('A', 'B');
            for (int i = 0; i < text.length(); i++) {
                if (this.getLength() > 3) {
                    return;
                }
                super.insertString(offset + i, text.substring(i, i + 1), attributes);
            }
        }

        public void remove(int offs, int len) throws BadLocationException {
            if (offs == 0) {
                return;
            }
            super.remove(offs - 1, len);
        }
    }

    public static void main(String args[]) {
        new DocumentExample().setVisible(true);
    }

}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp