import java.awt.*; import java.awt.event.*; public class Test { public static void main (String[] args) { Win win = new Win("Test Window"); } } /*******************/ /* クラスWinの定義 */ /*******************/ class Win extends Frame implements AdjustmentListener { Scrollbar s_h; TextField tx_h, tx_v; /******************/ /* コンストラクタ */ /******************/ Win (String name) { // Frameクラスのコンストラクタ(Windowのタイトルを引き渡す) super(name); // レイアウトの変更(行,列,水平ギャップ,垂直ギャップ) setLayout(new GridLayout(2, 1, 5, 10)); Font f = new Font("MS 明朝", Font.PLAIN, 20); // 上のパネル // パネルの追加 Panel pn1 = new Panel(); pn1.setLayout(new GridLayout(2, 1, 5, 10)); add(pn1); // テキストフィールドとスクロールバーの追加 tx_h = new TextField("abcdefghijklmnopqrstuvwxyz"); tx_h.setFont(f); pn1.add(tx_h); s_h = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 40); s_h.addAdjustmentListener(this); pn1.add(s_h); // 下のパネル // スクロールペインの追加 ScrollPane sp = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED); add(sp); // テキストフィールドの追加 tx_v = new TextField("abcdefghijklmnopqrstuvwxyz"); tx_v.setFont(f); sp.add(tx_v); // Windowの大きさ setSize(200, 200); // ウィンドウを表示 setVisible(true); // イベントアダプタ addWindowListener(new WinEnd()); } /******************************/ /* 上,左,下,右の余白の設定 */ /******************************/ public Insets getInsets() { return new Insets(35, 10, 10, 10); } /********************************************/ /* スクロールバーに従ってカーソル位置を調整 */ /********************************************/ public void adjustmentValueChanged(AdjustmentEvent e) { if (e.getAdjustable() == s_h) { int k = s_h.getValue(); if (k < tx_h.getText().length()) tx_h.setCaretPosition(k); } } /************/ /* 終了処理 */ /************/ class WinEnd extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } }