English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
스윙이 제공하는 창은 우리의 애플리케이션 요구를 충족시키지 않으므로, 어떤 이미지와 모양의 JFrame 프레임을 만들어야 합니다. 예를 들어, 아래와 같습니다:
또한 창 배경 이미지의 투명도를 설정할 수 있습니다
위의 효과를 어떻게 얻을 수 있는지 설명합니다:
(1)먼저 멋진 이미지가 필요합니다. 예를 들어, 양지지입니다. 하지만 다운로드된 이미지는 정사각형입니다. 양지지의 형상은 이미지 내부에 있습니다. 따라서 메이크업 쇼우 또는 PS에서의 마스크 표현 기능을 사용하여 양지지를 뽑아냅니다. 다음과 같습니다:
(2)투명 배경으로 이미지를 저장하면 됩니다.
(3)myJFrame를 JFrame를 상속한 것을 작성하면 다음과 같습니다:
import com.sun.awt.AWTUtilities; import javax.swing.*; import java.awt.*; public class myJFrame extends JFrame{ private float alpha; public myJFrame(String bgPath,float alpha){ super(); myContentPane rp = new myContentPane(bgPath); rp.setOpaque(false);//콘텐트 패널을 투명으로 설정합니다 this.setContentPane(rp); this.setUndecorated(true); this.setSize(rp.img.getIconWidth(), rp.img.getIconHeight()); AWTUtilities.setWindowOpaque(this, false);//JFrame를 투명으로 설정합니다 this.alpha = alpha; } private class myContentPane extends JPanel{ public ImageIcon img; public myContentPane(String bgPath) { super(); img = new ImageIcon(Test.class.getResource(bgPath)); } @Override protected void paintComponent(Graphics g) { AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha); Composite old = ((Graphics2D) g).getComposite(); ((Graphics2D) g).setComposite(ac); if(img!=null){ g.drawImage(img.getImage(), 0, 0, getWidth(), getHeight(), this); } ((Graphics2D) g).setComposite(old); super.paintComponent(g); } } }
위 프로그램의 주요 코드는 다음과 같습니다: JFrame를 투명으로 설정하고, JFrame의 테두리를 제거하고, 컨텐트 패널을 투명으로 설정한 후 이미지를 컨텐트 패널에 그립니다.
(4) 작성하십시오. Test:
import javax.swing.*; import java.awt.*; public class Test { public static void main(String[] args) { /** * 设置背景图和背景图的透明度,0为全透明,1.0f为不透明。 */ myJFrame f = new myJFrame("ab.png",0.7f); f.setLayout(null); Font font = new Font("宋体",Font.PLAIN,30); JLabel user = new JLabel("사용자 이름"); user.setFont(font); user.setBounds(100,150,100,30); JTextField userInput = new JTextField(); userInput.setFont(font); userInput.setBounds(200,145250,40); JLabel ps = new JLabel("암호"); ps.setFont(font); ps.setBounds(110200,90,30); JTextField psInput = new JTextField(); psInput.setFont(font); psInput.setBounds(200,195250,40); f.add(user); f.add(userInput); f.add(ps); f.add(psInput); 300,100); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
(5)테두리를 제거했기 때문에 창을 드래그하고 확장할 수 없습니다. 드래그하고 확장 기능의 구현은 이 문서에서 확인할 수 있습니다. Swing으로 창 드래그와 확장 구현
이것이 본 문서의 모든 내용입니다. 많은 도움이 되길 바라며, 많은 지지를 부탁드립니다. 나아가呐喊 교육을 많이 지지해 주시기 바랍니다.
명시: 본 문서의 내용은 인터넷에서 가져왔으며, 저작권은 원저자에게 있으며, 인터넷 사용자가 자발적으로 기여하고 업로드한 내용으로, 이 사이트는 소유권을 가지지 않으며, 인공적으로 편집되지 않았으며, 법적 책임도 부담하지 않습니다. 저작권 침해가 의심되는 내용이 있으시면, notice#w 이메일 주소로 메일을 보내 주시기 바랍니다.3codebox.com에 대한 신고는 이메일을 보내시면 #을 @으로 변경해 주시고 관련 증거를 제공해 주시면, 신고가 확인되면 이 사이트는 즉시 저작권 침해 내용을 삭제할 것입니다.