天天看點

java jframe背景_Java——JFrame與JButton添加背景

某些時候,我們會認為Swing的GUI實在是太難看了。我們可以通過修改背景,來達到一定的美化效果。

一、JFrame設定背景

在設定背景前,必須了解到JFrame分為4層,從下至上分别為RootPane、LayeredPane、ContentPane、GlassPane。其中GlassPane是預設透明的,ContentPane主要用來承載控件。

java jframe背景_Java——JFrame與JButton添加背景

我們設定背景,可以選擇設定在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); // 消除内容域,即中間的那一塊