/*
 *******************************************************************************
 * Copyright (C) 2004, International Business Machines Corporation and         *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 */

package com.ibm.icu.dev.tool.ime;

import java.awt.Rectangle;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class IMETest {
    public static void main(String[] args) {
    String sampleText = "This is a sample\nto put into the field.";
    Rectangle loc = new Rectangle(100, 100, 300, 300);
    for (int i = 0; i < 2; ++i) {
        JFrame jf = new JFrame("Test Window " + i);
        jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        Box box = Box.createVerticalBox();
        box.add(new JTextField(sampleText));
        box.add(new JTextField(sampleText));
        jf.getContentPane().add(box);
        jf.setBounds(loc);
        
        jf.setVisible(true);
        
        loc.x += 50;
        loc.y += 50;
    }
    }
}
