ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20220916 TIL 스윙 스윙 스윙 마 베이베 (feat. 배경사진 넣기)
    TIL 2022. 9. 16. 19:15


    메가테라 3주차에 태어나 처음으로 자바 GUI 라이브러리인 스윙을 접했었다.
    그런데 검색을 해도 자료가 많지 않고, css와 살짝 달라서 레이아웃을 마음대로 다루기가 너무 어려웠다.

    https://www.youtube.com/watch?v=H5z3XXa69Yc

    이번 주에는 그래도 스윙에 조금 익숙해져서 조금씩 스윙을 파보았고, 저번 주까지 하지 못했었던 이미지 추가를 성공했다!

    자랑스럽다.
    내가 이 레이아웃을 스윙으로 구현하다니!

    가장 좋은 방법이라고 보긴 어렵겠지만

    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등 새로운 것들을 많이 쓸 줄 알게 되었다.
    확실히 실험을 많이 해보고 삽질을 많이 해보다보니 스윙을 어떻게 써야할 지 조금은 감이 온 것 같다.

    어렵고 안 될 것 같은 것도 시간과 노력을 쏟으면 언젠가 된다.
    어렵다고 포기하지 말고 조금씩 어제의 나보다 나아지자.
    화이팅!

    댓글

Designed by Tistory.