본문 바로가기

Programming/JAVA33

자바GUI(Swing) - Simple text editor 인텔리제이(Intellij) IDE 를 사용하여 간단한 텍스트 에디터를 만들어보도록 하겠습니다. 1. 새 프로젝트 생성 인텔리제이 메뉴에서 File - New - Project 를 클릭하여 새 프로젝트를 생성해줍니다. Name은 editor로 하고, 적당한 위치에 아래와 같은 세팅으로 진행할 예정입니다. JDK는 설치되어있지 않다면 JDK의 드롭다운 메뉴 중 Download JDK를 눌러, 적당한 버전을 고른 후 다운로드 받아줍니다. 혹은 직접 원하는 JDK를 다운로드 받아서 선택할 수도 있습니다. 2. Main Class 생성 프로젝트 하위 폴더 중 src에서 우클릭하여 New - Java Class 를 클릭한 후, 클래스 이름을 editor로 하여 새로운 클래스를 생성해줍니다. 만들어진 클래스 내부에.. 2022. 7. 11.
자바GUI(JavaFX) - CSS파일 적용 JavaFX에서 css파일을 적용하는 방법에 대해 알아보겠습니다. 1. CSS 파일 추가 "resources - 프로젝트이름폴더" 하위에 css파일을 추가합니다. 샘플로 darktheme.css라고 이름지었습니다. 2. CSS파일 적용 HelloApplication클래스의 Scene 선언부 바로 뒤에 darktheme을 불러오는 코드를 추가합니다. package com.example.test07; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.stage.Stage; import java.io.IOException; public class HelloAppl.. 2022. 6. 26.
자바GUI(JavaFX) - Gradle 환경에서 외부 라이브러리 추가하기 IntelliJ에서 JavaFX 프로젝트 생성을 할 때 Maven 또는 Gradle 빌드환경을 선택하도록 되어있습니다. Gradle환경에서 외부 라이브러리 추가하는 방법에 대해 알아보겠습니다. 1. build.gradle 파일 수정 Gradle 환경으로 프로젝트를 생성하고 외부 Library를 추가할 때에는 build.gradle파일의 dependencies 부분에 인식시켜줘야 합니다. dependencies { implementation files("libs/gson-2.9.0.jar") // 라이브러리 추가부분 implementation files("libs/aquafx-0.1.jar") // 라이브러리 추가부분 testImplementation("org.junit.jupiter:junit-jupit.. 2022. 6. 25.
자바(JavaFX) - 계산기 1. main.java package application; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { try { // fxml layout loader //FXMLLoader loader = new FXMLLoader(); //loader.setLocation(getClass().getResource("MainView... 2021. 10. 18.
자바(JavaFX) - eclipse plugin 및 scene builder 설치 1. JavaFX 플러그인 설치 경로: help > eclipse Marketplace 검색: javafx 2. JavaFX 라이브러리 설치 GlueON JavaFX - Gluon Roadmap Release GA Date Latest version Long Term Support Extended or custom support Details 19 September 2022 (planned) n/a no 18 March 2022 (planned) early access no 17 September 2021 17.0.0.1 (September 2021) until September 2026 upon request details 16 gluonhq.com 3. Scene Builder 설치 GlueON Sc.. 2021. 10. 18.
Spring boot 시작하기 - 14강(스프링데이터JPA) 1. SpringDataJpaMemberRepository 인터페이스 작성 이번엔 클래스가 아닌 인터페이스를 만들어줍니다. 인터페이스만 만들면 객체는 JPA 템플릿이 자동으로 생성해준다고 합니다. package hello.hellospring.repository; import hello.hellospring.domain.Member; import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; public interface SpringDataJpaMemberRepository extends JpaRepository, MemberRepository { @Override Optional findByName(St.. 2020. 11. 30.
Spring boot 시작하기 - 13강(JPA) 1. build.gradle dependencies 설정 기존 jdbc 라이브러리 대신 jpa라이브러리를 설정합니다. 설정 뒤에는 코끼리 아이콘을 클릭하여 라이브러리를 끌어와 설치해줍니다. 2. application.properties 설정 spring.jpa,.show-sql=true 는 jpa가 수행하는 sql을 볼 수 있도록 하는 옵션이고, spring.jpa.hibernate.ddl-auto=none 은 회원 객체를 확인할 때 테이블을 자동 생성하는 기능은 끄고 시작하는 것입니다. 이번 예제에서는 테이블을 생성해 놓았으므로 none으로 합니다. none대신 create로 할 경우 테이블 생성까지도 자동으로 해 줍니다. 3. Member 클래스 코드 수정 @Entity : JPA가 관리하는 Enti.. 2020. 11. 30.
Spring boot 시작하기 - 12강(테스트) 1. 기존 MemberServiceTest크래스를 복사하여 MemberServiceIntegrationTest 클래스를 생성 후 아래와 같이 코드를 작성합니다. package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; imp.. 2020. 11. 30.
Spring boot 시작하기 - 11강(H2 Database연결-jdbc template방식) 1. build.gradle 설정파일로 가서 아래와 같이 코드를 추가해줍니다. 2. application.properties 파일에 가서 아래와 같이 수정해줍니다. 3. JdbcTemplateMemberRepository 클래스를 추가해줍니다. package hello.hellospring.repository; import hello.hellospring.domain.Member; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springfram.. 2020. 11. 30.
Spring boot 시작하기 - 10강(H2 Database생성) 테스트용으로 사용할 DB를 만들기 위해 H2라는 database를 설치하도록 하겠습니다. H2 database 사이트에서 본인의 OS에 맞는 버전을 다운받아 설치합니다. 다운받은(설치한) 경로에서 실행파일을 실행해줍니다. linux/Mac은 h2.sh를 실행하면 되고, windows는 h2.bat를 실행하면 자동으로 H2 콘솔이 브라우저로 열립니다. 잘 안나오면 뒷부분은 그대로 두고, IP 부분을 아래와 같이 localhost로 바꾸어줍니다. localhost:8082/login.do?jsessionid=f5e0be78c8ea2e025e1340946eb405a6 연결되면 JDBC URL 부분이 최초에는 아래와 같이 설정되어 있는데, 이는 폴더를 직접 접근하는 것입니다. 이를 소켓을 이용하여 접근하도록 아.. 2020. 11. 29.
Spring boot 시작하기 - 9강(조회) 1. @GetMapping("/members") 구현 MemberController에 @GetMapping("/members")를 구현합니다. package hello.hellospring.controler; import hello.hellospring.domain.Member; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotat.. 2020. 11. 27.
Spring boot 시작하기 - 8강(등록) 1. MemberController 수정 @GetMapping을 통해 "/members/new" 를 처리하는 코드를 작성합니다. package hello.hellospring.controler; import hello.hellospring.domain.Member; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.we.. 2020. 11. 27.
Spring boot 시작하기 - 7강(홈화면) 홈 화면을 추가해보겠습니다. 1. HomeController 클래스 추가 package hello.hellospring.controler; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home(){ return "home"; } } 2. home.html 추가 templates 패키지 아래에 home.html파일을 생성합니다. Hello Spring 회원 기능 회원 가입 회원 목록 결과 ~~ 끝 ~~ 2020. 11. 26.
Spring boot 시작하기 - 6강(컴포넌트 스캔과 자동의존관계 설정) 1. Member Controller 만들기 controller 패키지 안에 MemberController 클래스를 생성합니다. 그리고 아래와 같이 코딩합니다. package hello.hellospring.controler; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @Controller public class MemberController { private final MemberService memberService; @Autowired public Membe.. 2020. 11. 26.
Spring boot 시작하기 - 5강(테스트) Service 클래스에 대한 Test클래스를 작성하겠습니다. 우선 Service 클래스의 소스코드에서 Ctrl+Alt+T 버튼을 누르면 아래와 같이 테스트 코드 생성창이 뜹니다. Create New Test를 클릭하면 아래의 세부 설정창이 뜨는데, 아래와 같이 Testing Library를 JUnit5로 선택하고, Member들을 체크해준 뒤 OK를 클릭합니다. 그럼 자동으로 기본 구성이 된 소스 코드가 Test패키지 하위에 나타나게 됩니다. 해당 클래스 MemberServiceTest에 코드를 작성하면 됩니다. MemberServiceTest package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.he.. 2020. 11. 26.
Spring boot 시작하기 - 5강(Service) Service를 구현합니다. hello.hellospring하위에 Service 패키지를 만들고 MemberService클래스를 추가합니다. 1. MemberService클래스 package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import java.util.List; import java.util.Optional; public class MemberService { private final MemberRepository .. 2020. 11. 26.
Spring boot 시작하기 - 4강(테스트) 테스트 케이스를 만들고 테스트를 해보겠습니다. 아래와 같이 테스트 패키지-hello.hellospring 패키지 아래에 repository패키지와 MemoryMemberRepositoryTest클래스를 구성합니다. 1. MemoryMemberRepositoryTest클래스 package hello.hellospring.repository; import hello.hellospring.domain.Member; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.util.List; import static org.assertj.co.. 2020. 11. 25.
Spring boot 시작하기 - 4강(회원 도메인과 리포지토리) 회원 도메인과 리포지토리를 만들겠습니다. 폴더구조는 아래와 같이 하여 domain 패키지를 만들고 내부에 Member 클래스를 만들어줍니다. 그리고 repository 패키지를 만들어준 후 MemberRepository 인터페이스와 MemoryMemberRepository클래스를 만들어줍니다. 1. Member 클래스 package hello.hellospring.domain; public class Member { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } publ.. 2020. 11. 25.
Spring boot 시작하기 - 3강(파라미터 있는 MVC) 1. Controller 라우팅 추가 Controller 클래스에 "hello-mvc"라우팅을 추가합니다. 입력 파라미터로 "name"키에 값을 받아들이도록 합니다. name=???값을 이용해 "hello-template"를 반환하도록 합니다. package hello.hellospring.controler; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller publi.. 2020. 11. 23.
Spring boot 시작하기 - 2강(MVC예) 1. Controller작성 hello.hellospring 아래에 controler라는 패키지를 만든 후 HelloController라는 class를 만들어줍니다. 코드는 아래와 같습니다. localhost:8080/hello 로 접속 시 hello 함수를 실행하게 만들고, hello함수는 return "hello" 구문으로 hello를 리턴하는데, 이는 resources/templates에서 hello.html을 찾아서 반환해주는 역할을 합니다. 이때 속성으로 키가 "data"이고 값이 "hello!!"인 데이터를 함께 넘겨주게 됩니다. package hello.hellospring.controler; import org.springframework.stereotype.Controller; impor.. 2020. 11. 23.
Spring boot 시작하기 - 1강 1. 사전 준비 JDK 11버전을 설치해둡니다. IntelliJ도 설치를 해 둡니다. 2. start.spring.io 페이지에 접속하여 아래와 같이 세팅 후 Generate 를 클릭하여 Spring 프로젝트를 생성 및 다운로드 받습니다. 3. 원하는 곳에 압축을 풀고 IntelliJ를 이용하여 build.gradle파일을 열어줍니다. 4. Run하고 localhost:8080에 접속하여 에러 페이지가 나오는지 확인합니다. 아래와 같이 나타나면 정상설치가 된 것입니다. 5. 실행환경 변경 Settings에서 gradle로 검색하여 아래의 2가지 옵션을 gradle에서 IntelliJ IDEA로 변경해줍니다. 6. hello 페이지 만들기 Project View에서 src/main/resources/sta.. 2020. 11. 23.
Java - Intellij Scene Builder 찾기 인텔리제이에서 씬 빌더를 사용? 찾는 방법에 대해 적어놓습니다. 오랜만에 하려니 저도 어디있는지 까먹어서 많이 헷갈리네요... 처음 인텔리제이에서 javafx 프로젝트를 하나 생성하면 sample.fxml이라는 파일이 생성됩니다. fxml은 xml을 이용해 GUI를 쉽게 구현할 수 있게 해주는 언어인데요. 텍스트 탭과 scene builder 탭을 둘 다 볼 수 있습니다. 문제는 탭이 화면 아래쪽에 있는 것인데요....(아래 그림 참조) 이것때문에 괜히 파일명 우클릭해서 한참 찾았네요. 찾느라 고생 없으시길... 참고로, 처음 실행할 때 에러메시지와 함께 scene builder 다운로드가 아직 안됐다는 에러가 뜨는데... 해당 경고 따라 다운받아주시면 알아서 설치되고, 곧바로 보여집니다. scene b.. 2020. 11. 12.
Java Spring Boot 시작하기 - Hello World 1. JDK 설치 2. STS(Spring Tool Suit) 다운로드 및 설치 spring.io/tools 사이트로 이동하셔서 본인의 OS에 맞는 파일을 다운받아 설치합니다. 최근에 실행파일이 .jar로 바뀐 것 같은데요... java가 깔려있다면 실행되며(압축풀림) 폴더 하나가 생기게 됩니다. 안되면 cmd에서 실행해야합니다. (java -jar 받은파일명.jar) 팁으로....탐색기의 경로에 cmd를 곧바로 치면 해당 폴더에서 커맨드가 열립니다. 폴더 안에 SpringToolSuite4.exe 실행파일을 실행하시면 설치없이 실행됩니다. 3. 프로젝트 생성 4. 폴더 구조 5. 파일 수정(DemoApplication.java) package com.example.demo; import org.spri.. 2020. 11. 4.
JAVA - SWING JTable 기초 사용법 오늘은 Java GUI에서 테이블 출력을 구현하는 Swing의 JTable클래스를 활용하여, 간단한 예제를 구현하였습니다.아래 코드를 실행하면 아래와 같은 화면이 나옵니다. 기능은 없고, 단순히 화면만 구성된 소스이니 참고하세요~~ package com; import javax.swing.*; import java.awt.*; public class wij_com { public static void main(String args[]){ Dimension dim = new Dimension(430, 400); //단순 2차원값 입력을 위한 클래스 JFrame frame = new JFrame("wij complex"); frame.setLocation(0, 0); //출력 위치를 화면 좌상단에 위치 fr.. 2020. 3. 14.
JAVA - Intellij 환경에서 실행파일 jar 만들기 JAVA프로그램을 실행하기 위해서는 jar파일이 있어야 하는데요,저는 주로 인텔리제이를 사용하는 관계로, 인텔리제이에서 jar 실행파일 만들기를 수행해보겠습니다. 우선 File - Project Structure 메뉴로 들어가서 Artifacts - JAR - From modules with dependencies... 를 클릭합니다. 그리고 메뉴가 팝업되면, Main Class에 현재 프로젝트의 메인 클래스를 선택해줍니다. (탐색 버튼으로 고르기) 잘 추가되면 아래와 같이,,, 이제 준비가 되었습니다. 빌드하러 갑니다. Build 메뉴로 가보시면 Build Artifacts...라는 서브 메뉴가 보입니다. 이걸 클릭해야 실행파일이 만들어집니다. 뭐가 한번 더 뜨네요. Action 에서 Build 를 클.. 2020. 3. 12.
JAVA - Intellij JavaFX 설치(Java 11 이후 버전용) 인텔리제이에 JavaFX 프로젝트 만들기 힘드네요.그래서 오늘 구글 검색해가며 수행한 내용을 좀 기록해 놓으려고 합니다. 한글 검색으로는 대부분 JavaFX설치 매뉴얼이 이클립스 기준이라.... 인텔리제이 정보 찾느라고 조금 힘들었습니다. 사실 금방 나오지만...영어라... 1. 우선 Intellij, JavaSDK는 기본적으로 깔려 있어야 합니다. (예제에서는 JavaSDK 13, JavaFX SDK11을 사용하였습니다.) 2. JavaFX SDK를 다운받아서 설치해야합니다. 다운받는 경로는 요기를 참조하세요. 설치..가 아니라 적당한 곳에 압축을 풀어놓으면 됩니다. 참고로 Program Files와 같이 빈칸이 들어간 곳에 하면 나중에 Module 추가부분에서 에러가 발생하니, 주의하시기 바랍니다. .. 2020. 2. 20.
AWT Study - FileDialog 사용하기 파일 다이얼로그 사용 예제입니다. import java.awt.*; class MyFrame extends Frame{ private FileDialog fDialog = null; public MyFrame(String title){ super(title); this.setSize(400,300); this.setVisible(true); } public void paint(Graphics g){ super.paint(g); if(fDialog !=null) putMsg(g); } public void update(Graphics g){ putMsg(g); } public void setDialog(FileDialog f){ fDialog = f; } private void putMsg(Graphics.. 2020. 2. 11.
AWT Study - 팝업메뉴 import java.awt.*; public class awtex3 { public static void main(String args[]){ Frame f = new Frame("Popup Menu"); PopupMenu pm = new PopupMenu("Popup"); pm.add(new MenuItem("MenuItem1")); Menu m = new Menu("SubMenu1"); m.add(new MenuItem("SubMenuItem1")); pm.add(m); f.add(pm); f.setSize(300,200); f.setBackground(Color.white); f.setVisible(true); pm.show(f, 10, 100); } } 2020. 2. 11.
AWT Study - 메뉴 생성 import java.awt.*; public class awtex2 { public static void main(String args[]){ Frame f = new Frame("Pulldown Menu"); MenuBar mb = new MenuBar(); Menu m = new Menu("Menu1"); m.add(new MenuItem("MenuItem1")); Menu sm = new Menu("SubMenu1"); sm.add(new MenuItem("SubmenuItem1")); sm.add(new MenuItem("SubmenuItem2")); m.add(sm); m.add(new MenuItem("MenuItem2")); mb.add(m); f.setMenuBar(mb); f.setSi.. 2020. 2. 11.
AWT Study - Window & Frame AWT가 오래된 것인줄만 알았는데 우리 회사에서 아직도 쓰고 있습니다. 그런데 생각해보니까, 오래된 소스도 최신 컴퓨터에서도 잘 돌아가고, 별도 설치도 필요 없고, 호환 잘 되는게 좋은 것 같습니다. Visual Basic으로 짜여진 프로그램도 있는데, 유지보수가 너무 힘드네요...항상 가상XP를 깔고 배포도 엄청 복잡해요. 그래서 결론은 다시 AWT! 기초부터 차근차근 공부해 보도록 하겠습니다. 우선 Window와 Frame 만들기 예제 import java.awt.*; public class awtex { public static void main(String args[]){ Frame f = new Frame("Frame"); f.setSize(500, 400); f.setBackground(Col.. 2020. 2. 11.