그래픽요소를 사용해서 사용자가 이용할 수 있는 컴퓨터 인터페이스를 의미합니다. 마우스로 클릭하는 화면의 모든 것이 GUI라고 할 수 있어요~
자바에서 사용하는 표준 GUI 라이브러리입니다. swing을 대체하기 위해 나온 최신 라이브러리죠!
하지만 우리는 한 번만 사용해볼 것 이기때문에 swing으로 경험해보겠어용.😜
swing 설치하고 Application Window -> java파일을 만들면 design이 가능한 gui창를 만들 수 있어요!
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GuiMain01 window = new GuiMain01();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
실행했을 때 기본 구성입니다. Runnable() 어디서 본 녀석아닌가용?? 바로 스레드에서 봤는데요. gui로 만들어지는 window가 하나의 스레드라는 말입니다~ 그래서 따로 창이 움직이면서 메인도 돌아가고 할수있다는 점
frame.getContentPane().setLayout(null); // Absolute layout으로 설정
레이아웃을 absolute로 설정하면 개발자 마음대로 구성을 할 수 있어요.
버튼을 클릭했을 때 입력한 내용을 출력하는 gui를 만들어봅시다!
JLabel lblName = new JLabel("이름");
lblName.setOpaque(true); // 배경색 설정을 위한 세팅 : true
lblName.setBackground(Color.PINK);
lblName.setHorizontalAlignment(SwingConstants.CENTER);
lblName.setFont(lblFont);
lblName.setBounds(12, 10, lblWidth, lblHeight);
frame.getContentPane().add(lblName);
이런식으로 내용만 바꿔서 이름, 전화번호, 이메일을 의미하는 label을 만들어줘요. 만약 label의 배경색을 바꾸고싶다면 Opaque를 꼭 true로 설정해줘야합니다. 색상만 지정한다고 바뀌지않아요~
textName = new JTextField();
textName.setFont(txtFont);
textName.setBounds(269, 10, txtWidth, txtHeight);
frame.getContentPane().add(textName);
textName.setColumns(10);
label과 똑같이 textField를 입력받는 창을 이름, 전화번호, 이메일까지 만들어줍니다.
btnInsert = new JButton("정보 출력");
btnInsert.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
String name = textName.getText();
String phone = textPhone.getText();
String email = textEmail.getText();
String msg = "이름 : " + name + "\n" + "전화번호 : " + phone + "\n" + "이메일 : " + email;
textArea.setText(msg);
}
});
btnInsert.setBounds(12, 268, 890, 100);
btnInsert.setFont(lblFont);
frame.getContentPane().add(btnInsert);
버튼을 눌렀을 때 입력한 데이터를 String 형태로 가져옵니다
scrollPane = new JScrollPane();
scrollPane.setBounds(12, 490, 890, 100);
frame.getContentPane().add(scrollPane);
textArea = new JTextArea();
textArea.setFont(txtFont);
textArea.setEditable(false); //편집불가능
scrollPane.setViewportView(textArea);
출력결과는 내용만 보여주고 수정할수 없게 해야하기 때문에 결과물은 textArea로 가져오겠습니다. textArea를 사용하려면 scrollPane으로 바탕을 깔아주고 그 위에 설정해야해요!
그리고 내용을 수정할 수 없도록 setEditable(false)를 꼭 설정해주세요~
사실 이부분은 GUI에 대한 개념만 잡고 그냥 swing이란게 있었구나~ 정도로만 알고 지나가려고 자세히 안다뤘습니다!만 ㅎㅎ 수업은 어떨지 모르겠네요