某些時候,我們會認為Swing的GUI實在是太難看了。我們可以通過修改背景,來達到一定的美化效果。
一、JFrame設定背景
在設定背景前,必須了解到JFrame分為4層,從下至上分别為RootPane、LayeredPane、ContentPane、GlassPane。其中GlassPane是預設透明的,ContentPane主要用來承載控件。
我們設定背景,可以選擇設定在RootPane或LayeredPane,這樣就不會影響到ContentPane。
以下以LayeredPane為例:
1. 建立圖像:
ImageIcon icon = new ImageIcon("./img/mainFrame.png");
Image img=icon.getImage().getScaledInstance(width, height, Image.SCALE_FAST); // 圖像縮放為适合Frame大小
JLabel jlabel= new JLabel(newImageIcon(img));
jlabel.setBounds(0, 0, width, height);
2.将圖像放置在LayeredPane中
f.getLayeredPane().add(jlabel, new Integer(Integer.MIN_VALUE));
LayeredPane也是分層的,根據整數大小有若幹層。這裡将JLabel放置在了LayeredPane最底層。
3.将ContentPane和RootPane設定透明(可以消去邊框)
JPanel jp =(JPanel) f.getContentPane();
JRootPane jp1=(JRootPane) f.getRootPane();
jp.setOpaque(false);
jp1.setOpaque(false);
4. 去除标題欄 : f.setUndecorated(true);
二、JButton設定背景
JButton同樣用setIcon
btn.setBorderPainted(false); // 消除邊框
btn.setContentAreaFilled(false); // 消除内容域,即中間的那一塊