Posted by 김덕태 on November 25, 1997 at 03:19:55:
In Reply to: 임의의 컴포넌트에서 한글 입력 받기 (TextField이용하는 방법) posted by 김덕태 on November 25, 1997 at 03:06:46:
약간 문제가 되는 부분이 있으므로, 한줄 추가...
import java.awt.*;
import java.awt.event.*;
class KeyEventTest3
{
public static void main(String[] args)
{
KeyEventTest3 tester = new KeyEventTest3();
Frame f = new Frame();
f.add( tester.display, "Center" );
f.add( tester.input, "West" );
f.setSize(300, 300);
f.setVisible(true);
}
int posX = 0, posY = 0; // 출력 위치
String inputString = ""; // 출력 문자열
TextField input = new TextField()
{ // TextField가 출력되지 않도록 크기를 0으로 만든다.
public Dimension getPreferredSize()
{ return new Dimension(0,0);
}
};
Canvas display = new Canvas()
{
public void paint(Graphics g)
{ g.drawString( inputString, posX, posY );
}
};
KeyEventTest3()
{
display.addMouseListener( ml );
display.addFocusListener( fl );
input.addKeyListener( kl );
}
MouseListener ml = new MouseAdapter()
{ public void mousePressed(MouseEvent ev)
{ inputString = "";
posX = ev.getX();
posY = ev.getY();
input.requestFocus(); // 포커스를 TextField로 전송
}
};
FocusListener fl = new FocusAdapter()
{ public void focusGained(FocusEvent ev)
{ input.requestFocus(); // 포커스를 TextField로 전송
}
};
KeyListener kl = new KeyAdapter()
{ public void keyTyped(KeyEvent ev)
{ inputString += ev.getKeyChar();
// 네이티브 입력기로부터의 한글이 전달된다.
input.setText("");
display.repaint();
}
};
}