English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
스윙이 제공하는 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(메일을 보내는 경우, #을 @으로 변경하여 신고하시고, 관련 증거를 제공해 주시기 바랍니다. 확인되면, 이 사이트는 즉시 위반된 내용을 삭제할 것입니다。)