반응형
*Swing
-아이콘 사용
-
이미지를 쉽게 사용할 수 있다.
-
ImageIcon
-
javax.swing package ImageIcon class
-
ImageIcon ii = new ImageIcon("경로");
-
모든 확장자의 파일을 사용할수 있으나, .(bmp는 무거워서 잘쓰지 않는다. jif도 많이 깨지고,, jpg,png많이 사용한다.)
-
이미지 코딩
-
필요한 Component에서 사용
-
JButton jb = new Jbutton(ii); <로 아이콘을 가진 버튼이 생성된다.
-
세분화가 매우 많이 되어잇어서 AWT와 다르게 설정이 잘되어있어서 원하는 위치에 잘 박아넣을 수도 있다.
-
경로를 "C:\dev\a.jpg" 면 에러가 나는데,\가 특수기호라 \\로 표기하거나, /슬래쉬로 표기하여 준다.(리눅스는 슬래쉬만 가능)
-Border
-
Javax.Swing.border 패키지에서 관련 클래스 제공.
-
테두리가 없는 Component(거의 모든 Component)에게 테두리를 적용할 때 사용.
-
-타이틀이 있는 테두리)
-
1.Border 생성
-
TitledBorder tb = new TiltedBorder("타이틀에 들어갈 메세지");
-
2.컴포넌트에 적용
-
jb.setBorder(tb); //JComponent에 존재.
-한줄입력 받기
-
JTextField
-
getText()로 글을 얻는다.
-비밀번호 입력시 *처리
-
TextField의 setEchoChar(char c); =>char부분에 *처럼 넣을 문자를 넣는다.
-
awt에서는 다?쓰지만, Swing에서는 일반문자만 입력받을때 JTextField를 사용한다.
-
JPasswordField //예전에는 *이 나왔으나 요즘엔 ●
-
getPassword() 사용하면 캐렉터형의 배열=>문자열이 아님 (사용자가 비밀번호를 얻으려면)
-
char[] c =getPassword();
-
String(char[] value) 가 가능하기 때문에 String s = new String(c);
-
String.valueOf(c); 도 가능.으로 문자열로 얻을수 있다.
JTF
JPF
JL
만 있으면 이창에 뭐가 들어가는지 알수 없다. 따라서 Border로 덧입혀 설명을 해주면 쉽게 알수 있다?
-LineBorder
-
사용법)
-
LineBorder lb= new LineBorder(Color.BLACK);
-
모든 컴포넌트는 설정 가능.
-
jb.setBorder(lb);
-
//타이틀의 보더는 뭔지 알수있게 타이틀이 들어가지만 라인보더는 테두리를 하나 더 두름으로 강조의 효과를 줄수 있다.
-JOptionPane
-
javax.swing패키지의 JOptionPane
-
다이얼로그를 미리 구현해 놓은 클래스
-
<하나하나 아이콘넣고 버튼넣고 이벤트 넣고 간단한 창으로 보이는데도 손이 많이가....
-
생성은 되는데 잘하지 않는다.
-
Static method인 show~~주로 사용함.
-
입력받기(InputDialog)
-
Stirng s = JOptionPane.showInput Dialog("메세지");
-
메세지 제공(MessageDialog)
-
JOptionPane.showMessageDialog(new Frame()=Frame의 instance,"메세지");
-
//반환형이 없어 정보만 주고 만다. 이 메세지가 아이디를 입력하세요에 들어간다.
-
원래는 부모창이 있어야 뜨지만 null로 비워줘도 뜨기는 뜬다. 나중에 에러의 위험이있음
-
Confirm Dialog : 사용자의 의중을 얻을 수 있는 다이얼로그.
-
정말 삭제하시겠습니까?같은 메세지 예,아니요,취소버튼을 3가지 갖는다.
-
int flag=JOptionPane.showConfirmDialog(Frame instance,"메세지");
-
사용자가 선택한 값에따라 flag에 0,1,2의 값이 담긴다.
-
똑같이 Frame부분에 null을 넣을수도 있긴하다.
-JList
-
<MVC Patten으로 되어있어 분리할 수 있다. java.swing.event 패키지에 들어있다.
-
MVC Pattern 이 적용된 클래스.
-
awt와 같으면서 완전히 다르다.
-
view : JList -
-
Model : DefaultListModel -데이터추가,삭제 //awt는 이 위두개가 묶여 있는 형태.
-
event : ListSelectionListener -
-
<JList에 add 랑 remove가 없는데,,,일이 나누어져 있는것.
-
,,,,,,등
-
-
사용법)
-
1.생성
-
모델을 사용하지 않고 생성하는경우
-
JLsit jl = new JList(); //
-
모델을 생성(더많이 사용)
-
DefaultListModel dlm = new DefaultListModel(); //값에 대한 일밖에 안한다.
-
리스트를 생성해서 모델과 has a 관계로 생성하는 방법(더많이 사용)
-
jList jl = new JList(dlm);
-
데이터 추가
-
dlm.addElement(값);
-
인덱스 사용
-
dlm.add(인덱스,값);
-
크기
-
dlm.size();
-
값 얻기
-
dlm.get(인덱스);
-
값 삭제
-
dlm.remove(인덱스);
-
dlm.removeElement(내용값);
-
dlm.clear();//싹삭제
-
선택한 Item의 인덱스
-
jl.getSelectedIndex(); //값에 대고 클릭하지 인덱스를 아는게 아니기 때문에 JList
-
선택한 값의 인덱스
-
인덱스와 값얻기를 써서 얻을수 있는데 더명확
-
dlm.get(jl.getSelectedValue());
-
jl.getSelectedValue(); //값만 얻을때에는
사용자가 하는 일이랑 데이터처리하는 일이랑 구분되어있음!
보는쪽과 데이터쪽의 객체가 하는일이 나누어져있다.!!!
데이터만 볼꺼면 Default~
화면의 이벤트는 JList
JList는 스크롤바가 없닷......JTextArea에도 없닷!!
-JScrollPane
-
ScrollBar를 가지지 않은 컴포넌트에 스크롤바를 추가하는 일.
-
JTextArea, JList, JTable의 객체는 일반적으로 필요한 객체들인데 Scrollbar를 가지지 않는다.
-
사용법)
-
1. Component 생성
-
JTextArea jta= new JTextArea();
-
2.JScrollPane을 생성 & Component를 Has a관계로 선언
-
JScrollPane jsp=new JScrollPane(jta);
-
3.배치
-
add(jta) vs add(jsp) => has a 관계에서는 무엇을 넣어야 할까? 당근 JScrollPane~!~!
jta.setLineWrap(true);//줄바꿈 메소드
jta.setWrapStyleWord(true);//줄이 변경되면 단어를 보호하면서 줄을 변경.(한글은 지원되지 않는다. 영어만)
반응형