Daily coding
Java Basic : day 14 - AWT & SWING 6 : TextField & TextArea 본문
Language/Java_basic
Java Basic : day 14 - AWT & SWING 6 : TextField & TextArea
sunnnkim 2019. 12. 8. 15:14package day14.Lecture01_AWT.test6;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.text.BadLocationException;
public class WindowTest extends JFrame {
JTextField textField; // 텍스트 입력을 하는 곳
JTextArea textArea; // 대화가 보이는 곳
JButton btn1, btn2;
public WindowTest() {
super("간단한 예제");
// Panel : textArea + ScrollPane
JPanel panel = new JPanel();
textArea = new JTextArea();
textArea.setLineWrap(true);
// true : 글자가 textArea에 꽉차면 자동으로 다음줄로 가게해 줌
// 스크롤 만들기
JScrollPane scrPane = new JScrollPane(textArea);
// 스크롤을 생성할 곳을 textArea로 지정
scrPane.setPreferredSize(new Dimension(100,300));
// 스크롤 할 textArea의 크기
panel.add(scrPane);
// textArea를 패널에 추가
// botPan : button + textField
// 버튼과 텍스트필드를 담을 패널
JPanel botpan = new JPanel();
textField = new JTextField(20);
// JTextField(숫자) : getter, textField의 사이즈를 들어갈 문자의 개수로 표현
// JTextField(문자) : 텍스트필드에 미리 입력해서 나타낼 문자
// 버튼1에 액션 추가 ( 액션: 문자를 뒤에 추가)
btn1 = new JButton("next insert");
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 버튼이 눌리는 지 확인하는 메세지 띄우기
// JOptionPane.showMessageDialog(null, "눌림");
if( !textField.getText().equals("") ) { // 들어가는 문자가 있을 때
String msg = textField.getText()+"\n";
// append : 뒤에 메세지 추가
textArea.append(msg);
}
}
});
// 버튼2에 액션 추가 (액션 : 문자를 앞에 추가)
btn2 = new JButton("prev insert"); // 앞에 글 추가
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 버튼이 눌리는 지 확인하는 메세지 띄우기
// JOptionPane.showMessageDialog(null, "눌림");
// 빈 문자열일때는
if( textField.getText().equals("") ) {
JOptionPane.showMessageDialog(null, "문자를 입력하세요!");
return;
}
// 문자를 앞에 추가하기
String msg = textField.getText()+"\n";
// insert() : 메세지 넣을 위치 지정
try {
// 맨 앞에 넣기
textArea.insert(msg, textArea.getLineStartOffset(0));
// getLineStartOffset(int lineNum)
// 지정된 행의 개시 오프셋(offset)를 리턴
textField.setText("");
} catch (BadLocationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
};
}
});
botpan.add(textField);
botpan.add(btn1);
botpan.add(btn2);
// container 이용해서 Layout 잡기
Container contentPane = getContentPane();
contentPane.add(panel, BorderLayout.CENTER); // 중간
contentPane.add(botpan, BorderLayout.SOUTH); // 아래쪽
contentPane.add(botpan, BorderLayout.NORTH); // 위쪽
contentPane.add(botpan, BorderLayout.WEST); // 왼쪽
contentPane.add(botpan, BorderLayout.EAST); // 오른쪽
setSize(640, 480); // 윈도우 크기 (폭, 높이)
setLocation(0, 0); // 윈도우 실행위치(0,0): 좌측 상단
setVisible(true); // 윈도우 시각화
// JFrame 닫기
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
'Language > Java_basic' 카테고리의 다른 글
Java Basic : day 14 - AWT & SWING 8 : 마우스리스너 (0) | 2019.12.08 |
---|---|
Java Basic : day 14 - AWT & SWING 7 : Window Change (0) | 2019.12.08 |
Java Basic : day 14 - AWT & SWING 5 : 버튼 Button (0) | 2019.12.08 |
Java Basic : day 14 - AWT & SWING 4 : 패널 Panel (0) | 2019.12.08 |
Java Basic : day 14 - AWT & SWING 3 : 레이아웃 Layout (0) | 2019.12.08 |