programing

자바 : 이미지를 버튼으로 사용

minecode 2021. 1. 16. 09:26
반응형

자바 : 이미지를 버튼으로 사용


Java에서 이미지를 버튼으로 사용하고 싶습니다.

BufferedImage buttonIcon = ImageIO.read(new File("buttonIconPath"));
button = new JButton(new ImageIcon(buttonIcon));

그러나 이것은 여전히 ​​이미지 뒤에있는 실제 버튼을 보여줍니다. 이미지가 버튼으로 작동하기를 원합니다. 어떻게 할 수 있습니까?


다음과 같이 테두리를 제거하십시오.

button.setBorder(BorderFactory.createEmptyBorder());

그리고 내용 1 :

button.setContentAreaFilled(false);

1 : @ 3sdmx가 질문에 추가 한 솔루션에서 가져옴


이미지를 레이블로 설정하고 마우스 리스너를 레이블에 추가하여 클릭을 감지하는 것이 좋습니다.

예:

ImageIcon icon = ...;

JLabel button = new JLabel(icon);

button.addMouseListener(new MouseAdapter() {
  @Override
  public void mouseClicked(MouseEvent e) {
     ... handle the click ...
  }
});

buttonIcon.setBorder (new EmptyBorder (0,0,0,0));


button.setBorderPainted( false );

이는 netbeans에서 contentAreaFilled 속성을 False 로 설정하여 쉽게 수행 할 수 있습니다.


    BufferedImage buttonIcon = ImageIO.read(new File("myImage.png"));
    button = new JButton(new ImageIcon(buttonIcon));
    button.setBorderPainted(false);
    button.setFocusPainted(false);
    button.setContentAreaFilled(false);

그냥 쓰세요

button.setContentAreaFilled(false);

내가 아는 한 쉽게 할 수있는 방법은 없습니다. 이미지를 표시하고 버튼처럼 작동하려면 이미지를 표시하려면 JButton 클래스의 "paintComponent"메서드를 재정의해야합니다. JPanel 위치는 이미지 ( clicky )를 그리고 MouseListener / MouseAdapter를 추가하여 "mousePressed"이벤트를 처리합니다.


아래 단계를 따랐고 'ImageButton'을 성공적으로 만들 수있었습니다.

  1. 만들기 JButton
  2. 액션 리스너 추가
  3. 이미지 아이콘을 설정합니다 ( info.pngsrc \ main \ resources 폴더에 아이콘을 배치하고 클래스 로더를 사용하여로드했습니다). 프로젝트 구조는 다음과 같습니다.프로젝트 폴더 구조
  4. 빈 설정 Border
  5. 콘텐츠 영역 채우기 비활성화
  6. 초점 기능 비활성화
  7. contentPane에 추가

PFB 나를 위해 일한 코드

JButton btnNewButton = new JButton("");
btnNewButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        System.out.println("Info clicked");
    }
});

String iconfilePath = this.getClass().getClassLoader().getResource("info.png").getFile();
btnNewButton.setIcon(new ImageIcon(iconfilePath));
btnNewButton.setBounds(10, 438, 39, 31);
btnNewButton.setBorder(BorderFactory.createEmptyBorder());
btnNewButton.setContentAreaFilled(false);
btnNewButton.setFocusable(false);
contentPane.add(btnNewButton);

위 코드에서 나온 출력 버튼은 다음과 같습니다.

여기에 이미지 설명 입력

참조 URL : https://stackoverflow.com/questions/4898584/java-using-an-image-as-a-button

반응형