반응형

인텔리제이에서 씬 빌더를 사용? 찾는 방법에 대해 적어놓습니다. 오랜만에 하려니 저도 어디있는지 까먹어서 많이 헷갈리네요...

 

처음 인텔리제이에서 javafx 프로젝트를 하나 생성하면 sample.fxml이라는 파일이 생성됩니다. fxml은 xml을 이용해 GUI를 쉽게 구현할 수 있게 해주는 언어인데요. 텍스트 탭과 scene builder 탭을 둘 다 볼 수 있습니다. 문제는 탭이 화면 아래쪽에 있는 것인데요....(아래 그림 참조)

이것때문에 괜히 파일명 우클릭해서 한참 찾았네요. 찾느라 고생 없으시길...

참고로, 처음 실행할 때 에러메시지와 함께 scene builder 다운로드가 아직 안됐다는 에러가 뜨는데... 해당 경고 따라 다운받아주시면 알아서 설치되고, 곧바로 보여집니다. 

 

scene builder가 보이는건 알겠고.... 헬로월드 한번 만들어보겠습니다.

간단히 Container-pane 하나 바탕에 마련해두고, Controls-Button 드래그-드랍으로 얹어 놓은 후에, 텍스트만 Hello로 바꿨습니다. 잘 뜨겠죠?

네, 잘 뜹니다. ㅋㅋㅋ.

조금 더 진행해보겠습니다. Hello Button 위쪽에 TextField를 갖다 놓습니다. 아직까지 ID 는 모두 지정하지 않은 상태입니다.

 

 

이제 Controller에 가서 객체드를 컨트롤 할 코드를 작성하도록 하겠습니다.

package sample;

import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.control.Alert.AlertType;

public class Controller {
    @FXML
    private TextField txtMsg;
    @FXML
    private Button btnAlert;

    public void clickHandler(){
        String msg = txtMsg.getText();

        Alert alert = new Alert(AlertType.INFORMATION);
        alert.setTitle("알림창");
        alert.setHeaderText(null);
        alert.setContentText(msg);

        alert.show();
    }
}

  

 그리고 이번엔 scenebuilder 화면으로 와서 할 작업이 있습니다. (참고로 저는 Intellij 내부 scene builder에서 아래 메뉴가 안보여서 별도로 설치한 Scene Builder를 통해서 열어 작업했습니다. sample.fxml 우클릭 후 open in scenebuilder)

1. 아래 화면 왼쪽의 Controller탭에서 Controller class를 방금 반들어준 sample.Controller가 되도록 선택해줍니다.

2. Button을 클릭한 상태로 우측 Code탭을 보시면 Identity 부분에서 ID를 골라줍니다. ID는 소스에서 작성한 변수명이 되겠습니다. txtMsg와 btnAlert 두가지가 보일텐데, 버튼에는 btnAlert, 텍스트필드에는 txtMsg를 각각 선택해줍니다.

3. Button의 On Action필드에는 코드에서 작성한 clickHandler를 선택해줍니다.

그럼 준비가 끝났습니다. 이제 실행해보겠습니다.

텍스트 필드에 적당한 텍스트를 쓰고, Hello 버튼을 누르면 알림창이 잘 뜹니다.

 

 

- 끝 -

반응형
반응형

JAVA프로그램을 실행하기 위해서는 jar파일이 있어야 하는데요,

저는 주로 인텔리제이를 사용하는 관계로, 인텔리제이에서 jar 실행파일 만들기를 수행해보겠습니다.

 

우선 File - Project Structure 메뉴로 들어가서 Artifacts - JAR - From modules with dependencies... 를 클릭합니다.

 

 

 

 

그리고 메뉴가 팝업되면, Main Class에 현재 프로젝트의 메인 클래스를 선택해줍니다. (탐색 버튼으로 고르기)

 

 

 

 

잘 추가되면 아래와 같이,,,

 

 

정상 추가된 모습. OK를 눌러줍니다.

 

 

이제 준비가 되었습니다. 빌드하러 갑니다.

 

Build 메뉴로 가보시면 Build Artifacts...라는 서브 메뉴가 보입니다. 이걸 클릭해야 실행파일이 만들어집니다.

 

 

 

 

뭐가 한번 더 뜨네요. Action 에서 Build 를 클릭해줍니다.

 

자~ 확인해봅시다. 프로젝트 탐색창에서 out -> artifacts ->.....로 찾아 들어가면 드디어 .jar파일이 존재하는 것을 볼 수 있습니다. 이 경로를 탐색기로 찾아가 보겠습니다.

 

 

 

 

찾아보니 있습니다. 이걸 실행해보니.... 잘 열립니다.

 

 

실행파일 확인 및 프로그램 실행 모습

 

 

리눅스라 그런건지, JDK를 깔아서 그런건지, java path가 지정이 되어있어서인지는 모르겠습니다만, jar파일 만으로도 실행 잘 됩니다.

 

(ps) 만자로 리눅스 환경입니다.

반응형
반응형

 

인텔리제이에 JavaFX 프로젝트 만들기 힘드네요.

그래서 오늘 구글 검색해가며 수행한 내용을 좀 기록해 놓으려고 합니다. 한글 검색으로는 대부분 JavaFX설치 매뉴얼이 이클립스 기준이라.... 인텔리제이 정보 찾느라고 조금 힘들었습니다. 사실 금방 나오지만...영어라...

 

1. 우선 Intellij, JavaSDK는 기본적으로 깔려 있어야 합니다. (예제에서는 JavaSDK 13, JavaFX SDK11을 사용하였습니다.)

 

2. JavaFX SDK를 다운받아서 설치해야합니다. 다운받는 경로는 요기를 참조하세요. 설치..가 아니라 적당한 곳에 압축을 풀어놓으면 됩니다. 참고로 Program Files와 같이 빈칸이 들어간 곳에 하면 나중에 Module 추가부분에서 에러가 발생하니, 주의하시기 바랍니다. "C:\javafx-sdk-11.0.2" 의 형식이 되겠죠?

 

3. JavaFX 프로젝트를 생성합니다.

 

 

 

4. 적당한 이름으로 생성을 합니다. 그러나 JavaFX메뉴로 생성을 한 프로젝트 임에도 아직 JavaFX클래스들을 인식하지 못합니다.

 

 

 

5. 프로젝트 SDK 설정

"File -> Project Structure -> Project" 메뉴를 찾아가서 프로젝트 SDK를 찾아주고, Language Level도 아래와 같이 설정합니다. 무슨 의미인지는 모르겠으나 No new Language features라고 되어있으면 정상이라고 합니다.

 

 

 

6. 라이브러리 설정

"File -> Project Structure -> Libraries"메뉴로 가서 JavaFX 11라이브러리를 추가해 줍니다. 아래 화면에서와 같이 +버튼을 누르고 Java를 선택합니다.

 

 

설치한 라이브러리의 경로를 찾아주고..

 

 

적용할 모듈(생성한 프로젝트)을 선택합니다.

 

 

정상 적용되면 아래와 같이 나옵니다.

 

 

라이브러리가 적용되면 JavaFX 클래스를 인식한다는데, 아직 인식 못할 수도 있습니다..ㅠㅠ

 

7. 모듈 추가

컴파일은 되는데 아래와 같은 에러가 뜬다면 모듈 추가가 필요합니다. (저는 당연히 해야하는 걸로 알겠습니다.)

Error: JavaFX runtime components are missing, and are required to run this application

"Run -> Edit Configurations" 메뉴를 클릭하고

 

 

Run/Debug Configurations 다이얼로그가 나오면 VM options에 아래 내용을 입력합니다.

--module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml

 

 

%PATH_TO_FX%는 가가의 JavaFX 라이브러리의 경로입니다. 제 경우는

"--module-path C:\javafx-sdk-11.0.2\lib --add-modules=javafx.controls,javafx.fxml"

라고 입력했습니다. 인텔리제이로 아까 생성한 프로젝트는 FXML을 사용하므로, javafx.fxml과 javafx.controls가 필요합니다. 다른 것도 필요하면 여기에 추가해줘야 합니다.

 

 

여기까지 하고 Run을 실행하니 정말 거짓말처럼 작동이 되네요. 이게 되다니 신기하네요.

 

반응형

+ Recent posts