Notice
Recent Posts
Recent Comments
Link
passion and relax
[JAVA] 13. 스윙을 알아봅시다 (레이아웃 관리와 구성요소) 본문
Swing
javax.swing.JComponent 를 확장한 것들
컴포넌트 안에 컴포넌트를 넣을 수 있다.
패널 안에 버튼을, 버튼 안에 패널도 넣을 수 있다.
GUI를 만들기 위한 4가지
1. JFrame 객체 및 필요한 컴포넌트의 멤버 변수 선언
JFrame frame;
JButton button;
2. JFrame 객체 및 필요한 컴포넌트의 인스턴스 생성
frame = new JFrame();
button = new JButton("click me");
3. 컴포넌트를 frame의 패널을 얻어 그 패널에 추가
frame.getContentPane().add (BorderLayout.EAST, button);
4. 화면에 표시
frame.setSize (300, 300);
frame.setVisible (true);
Layout
BorderLayout
. Frame의 기본 Layout 이다.
. NORTH, WEST, CENTER, EAST, SOUTH
Flow Layout
. Panel의 기본 Layout 이다.
. 컴포넌트를 연속해서 넣으면, 좌->우로 넣다가 폭이 부족하면, 다음 행에 넣는 layout
BoxLayout
. 컴포넌트를 연속해서 넣으면, 위->아래로 넣다가 높이가 부족하면, 다음 행에 넣는 layout
JTextField
JTextField field = new JTextField (20); //생성자 1 : 20자 넣을 공간
JTextField field = new JTextField ("Your name"); //생성자 2 : 20자 넣을 공간
field.setText("whatever"); //텍스트 넣기
field.addActionListener(myActionListener); //기본 리스너로 엔터키를 누를 때, ActionEvent.
field.selectAll(); //내용 전체 선택
field.requestFocus(); //커서 포커스 이동
JTextArea
JTextArea text = new JTextArea (10, 20); //10행 20열 처리
text.append ("plus statement");
//스크롤바를 넣는 예제
public class TextArea1 implements ActionListener {
JFrame frame;
JPanel panel;
JTextArea text;
JButton button;
public void go() {
frame = new JFrame();
panel = new JPanel();
text = new JTextArea(10, 20);
button = new JButton("click me");
text.setLineWrap(true);
button.addActionListener(this);
JScrollPane scroller = new JScrollPane(text);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
panel.add(scroller);
frame.getContentPane().add(BorderLayout.CENTER, panel);
frame.getContentPane().add(BorderLayout.SOUTH, button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(350, 350);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
text.append("button clicked \n");
}
public static void main (String[] args) {
TextArea1 gui = new TextArea1();
gui.go();
}
}
JCheckBox
JCheckBox check = new JCheckBox("Goes to 11"); //생성자
check.addItemListener (this); //Item 이벤트 등록
check.setSelected (true); //코드에서 선택 / 해제 예제
//이벤트 처리 예제
public void itemStateChanged (ItemEvent ev) {
sout (check.isSelected() ? "on" : "off");
}
JList
String[] listEntries = {"aaa", "bbb", "ccc"};
JList list = new JList(listEntries);
//스크롤바 넣기
JScrollPane scroller = new JScrollPane(list);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
panel.add(scroller);
list.setVisibleRowCount(4); //스크롤 하기 전에 보여줄 행의 개수
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.addListSelectionListener(this); //list 이벤트 등록
//이벤트 처리 예제
public void valueChanged (ListSelectionEvent lse) {
if ( !lse.getValueIsAdjusting() ) {
String selection = (String) list.getSelectedValue();
sout (selection);
}
}
'프로그래밍' 카테고리의 다른 글
[JAVA] 15. 연결하는 방법 (네트워크 소켓과 멀티스레딩) (0) | 2024.06.04 |
---|---|
[JAVA] 14. 객체 저장 (직렬화와 입출력) (0) | 2024.06.03 |
[JAVA] 12. 그래픽 이야기 (GUI, 이벤트 처리, 내부 클래스에 대한 소개) (0) | 2024.05.28 |
[JAVA] 11. 위험한 행동 (예외 처리) (0) | 2024.05.27 |
[JAVA] 10. 숫자는 정말 중요합니다 (수학, 포매팅, 래퍼, 통계) (0) | 2024.05.24 |