English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

swing으로 버튼을 어떤 모양의 패턴으로 재绘하는 방법

스윙이 제공하는 metalButton은 매우 거칠고, 우리의 실제 요구를 충족시키지 않으므로, 우리가 좋아하는 버튼을 맞춤화해야 합니다. 예를 들어, 이미지 버튼과 같습니다. 다음과 같이 보입니다.

) 그다음에 설명을 드리겠습니다.

(1) 멋진 버튼 이미지를 찾아야 합니다. 하지만 버튼이 이미지 내부에 있을 수 있으므로, 미술쇼쇼나 PS를 사용하여 버튼을 뽑아야 합니다. 다음과 같이 보입니다:

(2) 투명 배경으로 저장하면 됩니다.

(3) 그런 다음 나의 버튼 클래스를 작성하십시오:

import javax.imageio.ImageIO; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.image.BufferedImage; 
public class newButton extends JButton{ 
 ImageIcon img; 
 public newButton(String icon){ 
  super(); 
  this.img = new ImageIcon(Demo.class.getResource(icon)); 
  setBorderPainted(false); 
  setContentAreaFilled(false); 
  setOpaque(false); 
  setSize(img.getIconWidth(),img.getIconHeight()); 
  try{ 
   bi = ImageIO.read(Demo.class.getResource(icon)); 
  } 
   JOptionPane.showMessageDialog(this,"이미지 파일이 없을 수 있습니다.","ImageIO 예외",JOptionPane.ERROR_MESSAGE); 
   System.exit(0); 
  } 
 } 
 @Override 
 public void paintComponent(Graphics g){ 
  if(this.getModel().isPressed()){ 
   g.drawImage(img.getImage(),1,1,this); 
  } 
   g.drawImage(img.getImage(),0,0,this); 
  } 
  super.paintComponent(g); 
 } 
 BufferedImage bi ; 
 int rgb,alpha; 
 /** 
  * 버튼 클릭 범위를 이미지의 불투명 영역으로 설정합니다. 
  */ 
 @Override 
 public boolean contains(int x,int y){ 
  try{ 
   rgb = bi.getRGB(x,y); 
   alpha = (rgb>>24)&0xFF; 
   if(alpha==0){ 
    return false; 
   } 
    return true; 
   } 
  } 
   //투명 영역을 검색할 때 getRGB가 테이블 초과 예외를 발생시킵니다. 
   return false; 
  } 
 } 
} 

위의 프로그램은 contains 함수를 재정의하여 마우스 클릭 영역을 이미지의 유효 영역으로 제한합니다.

(4Demo 클래스를 작성하여 테스트하세요:

import javax.swing.*; 
import java.awt.*; 
import java.net.URL; 
public class Demo { 
 public Demo(){ 
  JFrame jf=new JFrame("이미지 모양 버튼 테스트"); 
  jf.setBounds(500,200,700,500); 
  myJPanel jp = new myJPanel(Demo.class.getResource("bg.jpg")); 
  jp.setLayout(null); 
  newButton jb1 = new newButton("bt1.png"); 
  1.setLocation(44,44); 
  jp.add(jb1); 
  1 = new newButton("snowFlower.png"); 
  1.setLocation(200,44); 
  jp.add(jb1); 
  1 = new newButton("bt2.png"); 
  1.setLocation(350,64); 
  jp.add(jb1); 
  1 = new newButton("bt3.png"); 
  1.setLocation(450,64); 
  jp.add(jb1); 
  jf.add(jp); 
  jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  jf.setVisible(true); 
 } 
 public static void main(String[] args){ 
  new Demo(); 
 } 
 private class myJPanel extends JPanel{ 
  ImageIcon bg; 
  public myJPanel(URL bg) { 
   this.setOpaque(false);//투명하게 설정할 것입니다. 
   this.bg = new ImageIcon(bg); 
  } 
  //배경 이미지를 설정하는 데 사용됩니다. 
  @Override 
  public void paintComponent(Graphics g){ 
   g.drawImage(bg.getImage(),0,0,this.getWidth(),this.getHeight(),this); 
   super.paintComponent(g); 
  } 
 } 
} 

이것이 본문의 전체 내용입니다. 많은 도움이 되었기를 바랍니다. 또한, 노래 튜토리얼을 많이 지지해 주시기 바랍니다.

명시: 본문의 내용은 인터넷에서 수집되었으며, 저작권자는 모두입니다. 내용은 인터넷 사용자가 자발적으로 기여하고 업로드한 것이며, 이 사이트는 소유권을 가지지 않으며, 인공적인 편집을하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 위반이 의심되는 내용이 있으면, notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com(메일을 보내는 경우, #을 @으로 변경하여 신고하시고, 관련 증거를 제공해 주시기 바랍니다. 확인되면, 이 사이트는 즉시 위반된 내용을 삭제할 것입니다。)

좋아하는 것