본문 바로가기
→ My Meta+IT/JAVA Source

JButton image 넣고 background 투명하게 설정

by DigitalJobs 2021. 12. 14.

JButton image 넣고 background 투명하게 설정

Java에서 처음 AWT와 Swing을 접하고 JButton을 사용하다 보면, 버튼의 세부적인 모양이나 둥근 버튼을 만들기 위해 배경을 투명하게 만들거나 외곽선을 없애고 싶은 경우가 있을 것이다.

 

 

아래의 코드들중 메서드를 참고하면 도움이 될 것이다.

import java.awt.*;
import javax.swing.*;

 

1. JButton 예제코드

JAVA에서 그래픽을 사용하기위해 import 해야 되는 구문입니다.

 class ImagePanel extends JPanel{
     Image image;
    JButton b1 = new JButton(new ImageIcon("./7.png")); //./7.png는 test image
    JButton b2 = new JButton(new ImageIcon("./7.png"));
    JButton b3 = new JButton(new ImageIcon("./7.png"));
    JButton b4 = new JButton(new ImageIcon("./7.png"));

   public ImagePanel(){
     b1.setSize(19,19);b2.setSize(19,19);b3.setSize(19,19);b4.setSize(19,19);
    // 이부분이 ..ㅠㅠ이미지 사이즈와 같은 사이즈로 버튼 사이즈를 변경하려는중...이었지만 아래에서 버튼의 채우기를 투명으로 바꾸니 버튼의 사이즈는 상관없게됨
    
     b1.setBorderPainted(false); b2.setBorderPainted(false);
     b3.setBorderPainted(false); b4.setBorderPainted(false);
     //JButton의 Border(외곽선)을 없애준다.   
    
     b1.setContentAreaFilled(false); b2.setContentAreaFilled(false);
     b3.setContentAreaFilled(false); b4.setContentAreaFilled(false);
     //JButton의 내용영역 채우기 않함
    
     b1.setFocusPainted(false);b2.setFocusPainted(false);
     b3.setFocusPainted(false);b4.setFocusPainted(false);
     //JButton이 선택(focus)되었을때 생기는 테두리 사용안함

 add(b1);    add(b2);    add(b3);    add(b4);  
/*  
    b1.setOpaque(false);//투명하게    
    b2.setOpaque(false);//투명하게
    b3.setOpaque(false);//투명하게   
    b4.setOpaque(false);//투명하게
 */
 //위의 채우기와 테두리를 false 값으로 변경하니 setOpaque(false);메소드의 역할이 없는것과 같다.
 }
}

단순히 버튼들의 옵션들을 활욯하여, 화면상의 모양들을 변경하고자 하는 코드이기에 관련된 코드만을 포함하고 있다는 점을 양해 바랍니다.

 

 

 

test를 위해 버튼 4개를 b1, b2, b3, b4로 생성하였고, 생성하면서 ImageIcon 클래스를 이용해 같은 사진 파일을 넣어주고 test 하였습니다.

 

2. 세부 코드 설명

     b1.setBorderPainted(false); b2.setBorderPainted(false);
     b3.setBorderPainted(false); b4.setBorderPainted(false);
     JButtondl 선택되지 않은 상태에서 Border(외곽선)을 없애줍니다.
    
     b1.setContentAreaFilled(false); b2.setContentAreaFilled(false);
     b3.setContentAreaFilled(false); b4.setContentAreaFilled(false);
     JButton의 내용영역 채우기 없애줍니다.
    
     b1.setFocusPainted(false);b2.setFocusPainted(false);
     b3.setFocusPainted(false);b4.setFocusPainted(false);
     JButton이 선택(focus) 되었을 때 생기는 얇은 점선 같은 테두리 사용하지 않습니다.

 

    b1.setOpaque(false);//투명하게    
    b2.setOpaque(false);//투명하게
    b3.setOpaque(false);//투명하게   
    b4.setOpaque(false);//투명하게

    JButton에 이미지가 외에 영역을 투명하게 만들고자 할 때 false값을 넣어줍니다.

 

public class  JButtonTest extends JFrame{
 Container content;
 ImagePanel imgP;


 public JButtonTest(String title){
   super(title);
   imgP = new ImagePanel();
   content = getContentPane();    
   content.add(imgP, BorderLayout.CENTER);
   setSize(600, 500);
   setVisible(true);
 }

 public static void main(String[] args){
  JButtonTest frame = new JButtonTest("버튼 테스트중~ㅠㅠ");
 }

 

이번 포스팅이 도움이되셨다면, 광고한번 클릭부탁드립니다.^^

JButton image 넣고 background 투명하게 설정
JButton image 넣고 background 투명하게 설정

댓글