[swing] JTextField, JTextArea

jmkim·2023년 6월 29일
0

swing

목록 보기
8/9

JTextField, JTextArea

JTextField, JTextArea은 텍스트를 입력할 때 사용하는 component이다.

두 컴포넌트의 차이는 줄바꿈 여부이다.
JTextField는 한 줄만 입력이 가능하고 JTextArea는 여러줄 입력이 가능하다.


주요 메소드

setText(String text) getText()
텍스트를 설정하거나 가져오는 메소드

setEnabled(boolean enabled)
컴포넌트의 사용가능 여부를 설정하는 메소드
setText getText 등 메소드 사용 가능함

setFocusable(boolean focusable)
컴포넌트의 포커스 가능 여부를 설정하는 메소드
setEnabled과 비슷한 역할을 수행하지만, UI가 변하지 않는다는 차이가 있다.

requestFocus()
해당 컴포넌트에 포커스를 주는 메소드

setSelectionStart(int selectionStart) setSelectionEnd(int selectionEnd)
텍스트 선택 범위를 지정해주는 메소드
start만 설정할 경우 해당 위치에 포커스를 준다.
end만 설정할 경우 처음부터 end까지 텍스트를 선택한다.
start와 end 모두 설정할 경우 start부터 end까지 텍스트를 선택한다.

setSelectedTextColor(Color c) setSelectionColor(Color c)
선택된 텍스트의 폰트 색, 배경 색을 지정하는 메소드

addKeyListener(KeyListener l)
키 이벤트를 지정하는 메소드

  • keyPressed(KeyEvent e)
    키가 눌렸을 때
  • keyReleased(KeyEvent e)
    키가 때어졌을 때
  • keyTyped(KeyEvent e)
    키가 때어졌을 때 (=keyReleased)

addFocusListener(FocusListener l)
포커스 이벤트를 지정하는 메소드

  • focusGained(FocusEvent e)
    포커스가 주어졌을 때
  • focusLost(FocusEvent e)
    포커스가 떨어졌을 때

setLineWrap(boolean wrap)
JTextArea만의 메소드
textarea의 줄바꿈 조건을 지정하는 메소드.
true로 설정하면 텍스트가 너비에 맞지 않으면 선이 래핑된다.
false로 설정하면 줄이 항상 풀린다.


실습

public class TextInput {

    public static void main(String[] args) {
        Frame frame = new Frame(300, 250, "Text Input");
        
        JScrollPane scroll = new JScrollPane(new TextArea());
        scroll.setPreferredSize(new Dimension(250, 100));

        JPanel p = new JPanel();

        p.add(new Label("제목"));
        p.add(new TextField());
        p.add(new Label("내용"));
        p.add(scroll);

        JPanel panel = new JPanel(new FlowLayout());
        panel.add(p);

        frame.add(p);
        frame.setVisible(true);
    }

    static class Label extends JLabel {

        public Label() {
            setFont(new Font("맑은 고딕", 0, 15));
        }

        public Label(String text) {
            this();
            setText(text);
        }
    }

    static class TextField extends JTextField {

        public TextField() {
            setBorder(new LineBorder(Color.lightGray));
            setPreferredSize(new Dimension(250, 30));
        }
    }

    static class TextArea extends JTextArea {

        public TextArea() {
            setLineWrap(true);
        }
    }
}

0개의 댓글