awt swing 화면 구성을 두 가지를 섞어서 할 수 있음. 용어정리 ② Component ③ LayoutManager 상속을 받을 때는 많이 사용하는 요소를 상속 받는 것이 좋음. 화면 생성은 프로그램 초기에 이루어져야 하므로 주로 생성자에서 작업이 이루어짐. //Container 위에 Component 추가 방법 프레임.add(Component component); //크기 지정 프레임.setSize(int x, int y); //Container 보이기 프레임.setVisible(Boolean b);간단한 프레임 예제 import java.awt.Button; import java.awt.Frame; public class FrameExam { Frame frame = new Frame("ㅎㅎㅎ"); Button button = new Button("ㅋㅋㅋ"); public void createFrame() { //프레임에 컴포넌트 추가 frame.add(button); //프레임 크기 지정 frame.setSize(300, 600); //프레임 보이기 frame.setVisible(true); } public static void main(String[] args) { //프레임 열기 FrameExam frameExam = new FrameExam(); frameExam.createFrame(); } }간단한 J프레임 예제 import javax.swing.JButton; import javax.swing.JFrame; public class FrameExam { JFrame frame = new JFrame("ㅎㅎㅎ"); JButton button = new JButton("ㅋㅋㅋ"); public void createFrame() { //프레임에 컴포넌트 추가 frame.add(button); //프레임 크기 지정 frame.setSize(300, 600); //프레임 보이기 frame.setVisible(true); //swing에만 있는 X버튼 클릭시 종료 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { //프레임 열기 FrameExam frameExam = new FrameExam(); frameExam.createFrame(); } } 컴포넌트 레이아웃 변경
방법 FlowLayout BorderLayout (예) Frame, Dialog import java.awt.BorderLayout; import java.awt.Container; import javax.swing.JButton; import javax.swing.JFrame; public class BorderLayoutExam { //컴포넌트 생성 JFrame jFrame = new JFrame("제목ㅋㅋ"); JButton btn1 = new JButton("1번버튼"); JButton btn2 = new JButton("2번버튼"); JButton btn3 = new JButton("3번버튼"); JButton btn4 = new JButton("4번버튼"); JButton btn5 = new JButton("5번버튼"); public BorderLayoutExam() { //컴포넌트를 넣을 컨테이너 구하기 Container container = jFrame.getContentPane(); //컴포넌트를 컨테이너에 추가 container.add(btn1, BorderLayout.NORTH); container.add(btn2, BorderLayout.EAST); container.add(btn3, BorderLayout.WEST); container.add(btn4, BorderLayout.SOUTH); container.add(btn5, BorderLayout.CENTER); //프레임 크기 지정 jFrame.setSize(300, 300); //프레임 보이기 설정 jFrame.setVisible(true); //종료 버튼 설정 jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { //실행 new BorderLayoutExam(); } } GridLayout 인수를 주지 않으면 행은 1행으로 고정되고 열이 계속 추가된다. 구체적인 위치 지정하기 복합적인 레이아웃 설정하기 텍스트 컴포넌트 //텍스트 입력 JTextField text = new JTextField("이름입력주세요.", 가로길이 - FlowLayout에서 의미가 있음); //스크롤바가 기본적으로 있는 AWT 텍스트 필드 TextArea textArea = new TextArea(); //스크롤바 기본 있음. //Swing에서의 텍스트 영역.. 스크롤바가 존재하지 않는다. JTextArea textArea = new JTextArea("내용 입력하세요.", 5,10);//스크롤바 없음 //Swing에서 스크롤바를 넣기 위해 아래와 같이 사용한다. JScrollPane jp = new JScrollPane(textArea);//스클롤바 만들기 //패스워드를 위한 필드 JPasswordField pwd = new JPasswordField();체크박스 컴포넌트 //취미(멀티선택) Checkbox hobby1 = new Checkbox("수영"); Checkbox hobby2 = new Checkbox("등산", true); Checkbox hobby3 = new Checkbox("낚시"); Checkbox hobby4 = new Checkbox("놀고먹기", true); //성별(단일선택) CheckboxGroup group = new CheckboxGroup(); Checkbox man = new Checkbox("남자" , true, group); Checkbox woman = new Checkbox("여자" , false, group);리스트 컴포넌트 import java.awt.Choice; import java.awt.FlowLayout; import java.awt.List; import java.awt.TextArea; import javax.swing.JComboBox; import javax.swing.JFrame; public class ListExam extends JFrame { String ch_item[] = { "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일" }; // List list = new List(3);//3행으로 보여짐(단일선택) List list = new List(4, true);// 4행으로 보여지고 멀티선택가능 TextArea text = new TextArea(5, 20);// 5행 10열 public ListExam() { super("JComboBoxExam 입니다."); // 레이아웃 변경 setLayout(new FlowLayout()); // List에 항목 추가 for (String str : ch_item) list.add(str); // 추가 super.add(list); super.add(text); // 크기 setSize(400, 300); // 보여줘 setVisible(true); // x클릭 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new ListExam(); } }파일 다이얼로그 컴포넌트 import java.awt.FileDialog; import javax.swing.JFrame; public class FileDialogExam extends JFrame { public FileDialogExam() { FileDialog load = new FileDialog(this, "열기모드"); FileDialog save = new FileDialog(this, "저장모드", FileDialog.SAVE); setSize(500, 400); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); load.setVisible(true); // 파일 불러오기 창 열기 System.out.println("선택폴더 : " + load.getDirectory()); System.out.println("선택파일 : " + load.getFile()); save.setVisible(true); // 파일 저장하기 창 열기 } public static void main(String[] args) { new FileDialogExam(); } }J다이얼로그 컴포넌트 import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; public class JDialogExam { // 필요한 필드 선언 JFrame jFrame = new JFrame("J다이얼로그 예제"); JDialog jDialog = new JDialog(jFrame, "JDialog 타이틀"); JButton jButton = new JButton("Click"); // GUI 구현 생성자 public JDialogExam() { // 다이얼로그에 버튼 추가 jDialog.add(jButton, "South"); // 기본 프레임 크기와 보기 설정 jFrame.setSize(200, 200); jFrame.setVisible(true); //X버튼 누르면 프로그램 종료 jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 다이얼로그의 크기와 보기 설정 jDialog.setSize(100, 100); jDialog.setVisible(true); //★X버튼 누르면 다이얼로그만 종료 jDialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } public static void main(String[] args) { //실행 new JDialogExam(); } }JOptionPane 예제 메뉴 만들기 JMenuBar : JMenu를 올릴 틀 JMenuItem을 JMenu에 add하고, JMenu를 JMenuBar에 add한다. 메뉴는 메뉴만의 자리가 따로 존재한다. JFrame.setJMenuBar( JMenuBar ); import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class MenuExam { // 프레임 선언 JFrame jFrame = new JFrame("Menu예제"); // Swing에서의 텍스트 영역.. 스크롤바가 존재하지 않는다. JTextArea textArea = new JTextArea("내용 입력하세요.", 5, 10);// 스크롤바 없음 // Swing에서 스크롤바를 넣기 위해 아래와 같이 사용한다. JScrollPane jp = new JScrollPane(textArea);// 스클롤바 만들기 // 메뉴 선언 JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu("파일"); JMenu helpMenu = new JMenu("Help"); public MenuExam() { // 파일 메뉴 생성 fileMenu.add(new JMenuItem("새 파일"));fileMenu.getItem(0).setAccelerator (KeyStroke.getKeyStroke('N', InputEvent.CTRL_MASK ^ InputEvent.ALT_MASK)); //단축키설정 fileMenu.add(new JMenuItem("열기")); fileMenu.add(new JMenuItem("저장")); fileMenu.addSeparator(); //구분선 추가 fileMenu.add(new JMenuItem("종료")); // 도움 메뉴 생성 helpMenu.add(new JMenuItem("버전")); helpMenu.add(new JMenuItem("정보")); // 메뉴를 메뉴바에 등록 menuBar.add(fileMenu); menuBar.add(helpMenu); // 메뉴바 추가 jFrame.setJMenuBar(menuBar); // 텍스트 영역 추가 jFrame.add(jp, "Center"); // 프레임 크기 지정 jFrame.setSize(300, 300); // 프레임 보이기 jFrame.setVisible(true); // swing에만 있는 X버튼 클릭시 종료 jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { // 실행 new MenuExam(); } } |