728x90
반응형
채팅창을 흉내내어 입력한 내용을 엔터키 누르고 전송하면 JTextArea에 출력
채팅을 치고 엔터키를 누르면 전송하는 방법
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class JTextAreaExample extends JFrame {
private JTextArea txtDisplay;
private JPanel pSouth;
private JTextField txtInput;
private JButton btnSend;
public JTextAreaExample() {
this.setTitle("JTextAreaExample");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().add(new JScrollPane(getTxtDisplay()), BorderLayout.CENTER);
this.getContentPane().add(getPSouth(),BorderLayout.SOUTH);
this.setSize(300, 200);
}
// JTextArea 생성
public JTextArea getTxtDisplay() {
if(txtDisplay == null) {
txtDisplay = new JTextArea();
txtDisplay.setEditable(false);
}
return txtDisplay;
}
// 남쪽에 부착할 JPanel 생성
public JPanel getPSouth() {
if(pSouth == null) {
pSouth = new JPanel();
pSouth.setLayout(new BorderLayout());
pSouth.add(getTxtInput(), BorderLayout.CENTER);
pSouth.add(getBtnSend(), BorderLayout.EAST);
}
return pSouth;
}
//JTextField 생성
public JTextField getTxtInput() {
if (txtInput == null) {
txtInput = new JTextField();
txtInput.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
getTxtDisplay().append(getTxtInput().getText() + "\n");
getTxtInput().setText("");
}
});
}
return txtInput;
}
//JButton 생성
public JButton getBtnSend() {
if (btnSend == null) {
btnSend = new JButton();
btnSend.setText("전송");
btnSend.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
getTxtDisplay().append(getTxtInput().getText() + "\n");
getTxtInput().setText("");
}
});
}
return btnSend;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JTextAreaExample jFrame = new JTextAreaExample();
jFrame.setVisible(true);
}
});
}
}
- 실행 결과 -
728x90
반응형
'자바' 카테고리의 다른 글
자바 UI - Swing (테이블 컴포넌트) (0) | 2023.02.17 |
---|---|
자바 UI - Swing (리스트 컴포넌트) (0) | 2023.02.17 |
자바 UI - 04) Swing (텍스트 컴포넌트) (0) | 2023.02.16 |
자바 UI - Swing (RadioButton 응용) (0) | 2023.02.16 |
자바 UI - 03) Swing (이벤트처리기, 버튼 컴포넌트) (0) | 2023.02.16 |