간단한 프로젝트(완성도 매우 낮음)를 진행하면서 찾아보고 알아낸 것들을 적어보고자 한다.
javaFX에 대한 자료를 찾아가면서 프로젝트를 진행했어야 했는데.. 한글로 되어있는 자료가 너~무 너~~~~무 없었다..
그래서 javaFX를 공부 하는 분들과, 관심이 있으신 분들이 있을 수도 있으니까.. 복습 겸 한번 올려보도록 하겠다!
(코드가 너무 형편없다고 생각이 들거나, 더 좋은 방법이 있다면 댓글에 남겨주세요~~~~~)
Font Load
javafx에 있는 Font라는 클래스를 사용해서 폰트를 불러오는 방법을 알아보도록! 하게슴니다...
// 첫번째
Font.loadFont(Class.forName("yourPakage.YourClass").getResource("./urFont.ttf").toString(), 16);
//두번째
Font.loadFont(getClass().getResource("./urFont.ttf").toString(), 16);
//세번째
Font.loadFont(getClass().getResourceAsStream("./urFont.ttf"), 16)
첫번째같은 경우는 아무래도 javafx를 사용해서 프로그램을 작성하면
실행 가능한 jar파일 이나, exe파일로 만들고싶은 생각이 들 것이다.
실행가능한 jar파일 exe파일로 만들 경우에 getResourceAsStream() 또는 getResource()를 사용하게 되면
예외가 발생하여 실행이 안되거나 폰트를 불러올 수 없을 가능성이 있다.
그래서 첫번째 방법을 추천한다!! (이클립스나 IDE에서 실행하면 셋 다 모두 잘 된다.)
이게 왜 작동을 못하는 건지는... 공부를 더 해봐야겠다. (-- 나중에 공부한 내용도 포스팅해 보겠읍니다~!@(feat.밥테일))
폰트 적용
여하튼! 이렇게 폰트를 불러왔으면
css파일에서 사용해주면 된다. css 문법과 매우 유사해서 어렵진 않다.
#loginPage .label {
-fx-font-size: 70;
-fx-text-fill: #d9d9d9;
-fx-font-family: "Font Family";
}
간단히 설명하자면, loginPage라는 id를 가진 녀석의 자식 중에 label 들에게 아래 css문법을 적용하겠다는 소리다.
흔히 사용하는 css와는 살짝 다른 게. label은 class="label"이 아니라 fxml에서의 태그다.
무슨 소리냐면 <Label>은 자바에서는 javafx.scene.control이라는 패키지 안에 있는 Label 클래스라는 소리다.
설명이 이상하지만... 넘어가자
그런데 이 폰트 패밀리는 어떻게 알아낼까?
아주! 간단하다!!
String fontFamily = "";
fontFamily = Font.loadFont(Class.forName("yourPakage.YourClass").getResource("./urFont.ttf").toString(), 16).getFamily;
System.out.println(fontFamily);
실행해보면 친절하게 콘솔에 찍어 줄 것이다..
#loginPage {
-fx-font-family: "배달의민족한나는열한살", "배달의민족", "배민한나", "한나체",
BMHANNA, HANNA, 'BM_HANNA', 'HANNA 11yrs old';
}
위 코드처럼 하나라도 걸려라 제발ㅜㅜㅜㅜㅜ 하는 마음으로 막 쓰지말고..ㅋㅋㅋㅋㅋ
.getFamily()로 손쉽게 알아내자... (본인은 정말 고장 난 줄 알았다...)
한 가지 더 알아두면 좋은 것!
System.setProperty("prism.lcdtext", "false");
폰트에 안티앨러싱을 적용한 것처럼 날카로운 부분들을 부드럽게 해주는 코드이다.
무조건 쓰면 좋다기보다, 폰트마다 어울릴 수도 있고 아닐 수도 있으니까 이리저리 잘해보자.
이상!
댓글