某些時候,我們會認為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(new ImageIcon(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); // 消除內容域,即中間的那一塊