-
20220916 TIL 스윙 스윙 스윙 마 베이베 (feat. 배경사진 넣기)TIL 2022. 9. 16. 19:15
메가테라 3주차에 태어나 처음으로 자바 GUI 라이브러리인 스윙을 접했었다.
그런데 검색을 해도 자료가 많지 않고, css와 살짝 달라서 레이아웃을 마음대로 다루기가 너무 어려웠다.이번 주에는 그래도 스윙에 조금 익숙해져서 조금씩 스윙을 파보았고, 저번 주까지 하지 못했었던 이미지 추가를 성공했다!
자랑스럽다.
내가 이 레이아웃을 스윙으로 구현하다니!
가장 좋은 방법이라고 보긴 어렵겠지만private void run() throws IOException { JFrame frame = new JFrame("프로젝트 이름"); // 윈도우 생성 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 윈도우의 x를 눌렀을 때 프로그램 종료 frame.setSize(640, 400); // 윈도우 크기 설정 frame.setResizable(false); // 윈도우 크기 조절 불가 설정 OverlayLayout overlay = new OverlayLayout(contentPanel); // frame 레이아웃 설정 contentPanel.setLayout(overlay); frame.add(contentPanel); // 프레임에 컨텐츠 패널 추가 contentPanel.add(내용을 넣어둔 패널); // 프레임에 추가된 컨텐츠 패널 가장 위쪽에 보여주고 싶은 내용을 담은 패널 추가 contentPanel.add(createBackgroundImage()); // 컨텐츠 패널에 11줄에서 넣은 내용 아래에 배경이미지 추가 frame.setVisible(true); } private JLabel createBackgroundImage() throws IOException { BufferedImage image = ImageIO.read(new File("src/main/resources/background.png")); // 이미지 읽어오기 JLabel label = new JLabel(new ImageIcon(image)); // 이미지가 들어간 라벨 만들기 label.setAlignmentX(0.5f); // 중앙 정렬 label.setAlignmentY(0.5f); // 중앙 정렬 return label; }
위 코드를 이용하면 배경 이미지를 추가할 수 있다.
그리고 배경 이미지 위에 쌓은 패널은 setOpaque(false)로 배경 투명 처리를 해주면 자연스러워 진다.
4주차 과제를 하면서 GridBagLayout등 새로운 것들을 많이 쓸 줄 알게 되었다.
확실히 실험을 많이 해보고 삽질을 많이 해보다보니 스윙을 어떻게 써야할 지 조금은 감이 온 것 같다.
어렵고 안 될 것 같은 것도 시간과 노력을 쏟으면 언젠가 된다.
어렵다고 포기하지 말고 조금씩 어제의 나보다 나아지자.
화이팅!'TIL' 카테고리의 다른 글
20220918 TIL 미래의 나를 믿어보자 (0) 2022.09.18 20220917 TIL 공유의 즐거움 (1) 2022.09.17 20220915 TIL 연습도 실전처럼 (0) 2022.09.15 20220914 TIL 코딩테스트를 TDD로 풀어보았다. (0) 2022.09.14 20220913 TIL 성수의 아침은 일찍 시작된다 (0) 2022.09.13