티스토리 뷰
1.Introduction
많이들 보신 화면입니다. 그런데, 이것은 자바로 만들어졌습니다.
기존의 스윙 Look & Feel 을 아시던 분이라면 아마도 놀라실듯 합니다.
JGoodies 는 제품개발, 소프트웨어 컨설팅 그리고 디자인 회사입니다.
자바 데스크탑 애플리케이션을 제작중이시거나 공부하시는 분들은 아마
http://java.sun.com/products/jfc/tsc/sightings/index.html 에서 많은
자바 애플리케이션들을 보셨을겁니다.
이중에서 UI 가 좀 이쁘다 싶으면 거의 모두 JGoodies 를 쓴거라고 보셔도 무방합니다.
JGoodies 에서 내놓은 Free Libraries 는 전세계 자바 유저들에게
엄청난 인지도를 가진 "Advanced Java Look & Feel API" 입니다.
http://www.jgoodies.com/freeware/index.html
이 라이브러리는 모두 BSD 라이센스 입니다.
이것은 GNU 라이센스인 GPL 보다 더 자유로운 라이센스로 , 쉽게 말하자면
공개된 소스가지고 지지고 볶든 , 뭐 다른걸 만들던 상관하지 않는다 라는 겁니다.
더 쉽게 말하면. 진짜 완전 꽁짜라는 소립니다. ㅡ.ㅡ;
2. JGoodies Free Libraries
공개된 라이브러리는 다음과 같습니다.
JGoodies Animation
-> Time-based real-time animations in Java
http://www.jgoodies.com/freeware/animation/index.html
JGoodies Forms
-> Build better screens faster
http://www.jgoodies.com/freeware/forms/index.html
JGoodies Looks
-> Free high-fidelity Windows and multi-platform appearance
http://www.jgoodies.com/freeware/looks/index.html
자바 데스크탑 애플리케이션을 만들때 아주 유용하게 쓰이는 것들입니다.
프로젝트에 JGoodies 를 적용할것이냐 말것이냐하는 판단은 개발자 각자의 몫이지만,
이것을 사용함으로서 얻는 이점은 이루 말 할수 없습니다.
3. JGoodies Looks
다운받아 보겠습니다.
먼저 라이브러리를 다운받기 위해
http://www.jgoodies.com/downloads/libraries.html 로 가서
JGoodies Looks 을 다운받습니다.
샘플 데모프로그램도 하나 다운 받아 봅시다.
http://www.jgoodies.com/downloads/index.html 로 가서
Looks Demo 를 다운 받습니다.
적당한 폴더에 풀고 데모를 실행시켜 보겠습니다.
>> java -jar looksdemo-1.2.2.jar
여기서 Look & Feel 과 Theme 를 선택하고 Launch Demo 를 누르면,
그냥 GUI 일 뿐이며, 액션은 없습니다. 이 윈도우를 종료하면 다시 Luncher 화면으로 돌아갑니다.
4. How to Use Look anf Feel
Java Swing 을 사용한 GUI 프로그램을 제작할때 ,
우리는 스윙의 look&feel 을 변경하고 싶을때..다음과 같이 합니다.
.
.
.
String macLAF = "com.sun.java.swing.plaf.mac.MacLookAndFeel";
String metalLAF = "javax.swing.plaf.metal.MetalLookAndFeel";
String motifLAF = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
String windowsLAF = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
String GTKLAF = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";
String lafName= windowsLAF ;//-> 원하는 룩앤필 이름을 지정합니다.
try {
UIManager.setLookAndFeel(lafName);
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
.
.
마찬가지 방법으로 JGoodies Look & Feel 을 적용한다면,
.
.
String exWinLAF ="com.jgoodies.plaf.windows.ExtWindowsLookAndFeel";
String plasticLAF ="com.jgoodies.plaf.plastic.PlasticLookAndFeel";
String plastic3DLAF ="com.jgoodies.plaf.plastic.Plastic3DLookAndFeel";
String plasticXPLAF ="com.jgoodies.plaf.plastic.PlasticXPLookAndFeel";
String lafName= exWinLAF ;//-> 원하는 룩앤필 이름을 지정합니다.
try {
UIManager.setLookAndFeel(lafName);
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
여러분이 만들어논 데스크탑 애플리케이션이 있다면,
JGoodies Looks jar 파일을 클래스 패싱하시고
위 코드를 main 에 추가해 보시면 아마 더 예쁜 GUI 가 보여질것입니다.
4. How to Use Theme
JGoodies 가 제공하는 Plastic 시리즈 룩앤필에는 원하는 테마를 설정할수 있습니다.
제공하고 있는 테마는 JGoodies API 를 참조합니다.
다음과 같이 Plastic 룩앤필에 테마를 설정합니다.
.
PlasticLookAndFeel.setMyCurrentTheme(new DesertBlue());
try {
UIManager.setLookAndFeel(new Plastic3DLookAndFeel());
} catch (Exception e) {}
.
.
JGoodies 의 FAQ 에도 나와 있지만
Plastic 룩앤필은 중국어 일본어 및 기타 언어를 지원하지 않습니다.
따라서 한국어를 지원하기 위해 약간의 꼼수가 필요합니다.
이 꼼수는 바로 Theme 를 이용하는 것인데,
PlasticTheme 클래스의 getFont0() 메소드를 오버라이드하여
내가 원하는 한글 폰트를 지정하는 것입니다.
.
PlasticLookAndFeel.setMyCurrentTheme(new DesertBlue(){
protected Font getFont0(int size) {
return new Font("굴림", Font.PLAIN, 12);
}
});
try {
UIManager.setLookAndFeel(new Plastic3DLookAndFeel());
} catch (Exception e) {}
.
5. 마치며...
Plastic 룩앤필은 특정한 몇몇개의 자바 컴퍼넌트의 UI 에 옵션을 설정할수 있습니다.
이것은 User's Guide 에 자세히 나와 있으므로 쉽게 참조 할수 있습니다.
JGoodies API는 아주 훌륭한 자바 룩앤필 이며
멋진 GUI 를 원하는 자바 데스크탑개발자라면 한번쯤 눈여겨 볼만한 API 입니다
'Computer > JAVA' 카테고리의 다른 글
JNA (Java Native Access) (0) | 2015.03.14 |
---|---|
[JAVA] 자바 실행파일 만들기 (0) | 2015.03.01 |
클래스 java.io.File (0) | 2013.05.29 |
평년/윤년 구하기 (0) | 2013.03.02 |
날짜 (0) | 2013.03.02 |