2013-06-21 59 views
0

如何設置自定義窗口的幀頭?使用自定義紋理製作JFrame

取而代之的是這個藍色標題,我想使用圖像中的紋理。

代碼:

final JFrame frame = new JFrame(); 
BufferedImage image = ImageIO.read(new File("d:/texture.bmp")); 

默認窗口:

enter image description here

+0

我還沒有嘗試過自己,但也許你可以通過周圍的[Synth外觀和現場]插手實現你在找什麼( http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/synth.html)。 –

回答

3

我不認爲你可以做一個JFrame的標題欄的顏色或圖像什麼,至少在沒有使用原生代碼來實現特定於平臺的解決方案。這是因爲JFrame實際上使用您的本地窗口系統來創建窗口。

對於內部框架,您可以自定義它,因爲它是在由Java控制的窗口內呈現的組件。事實上,您可以在UI管理器中設置大量JInternalFrame properties

你不能在那裏放置圖像。但是,您可以嘗試JavaFX

這是我做的事,試圖從外觀和手感:

import javax.swing.*; 
import javax.swing.plaf.*; 
import javax.swing.plaf.metal.*; 
public class TitleColor 
{ 
public static void main_helper (String args[]) 
{ 
JFrame f = new JFrame(); 
f.setDefaultCloseOperation 
(
JFrame.DISPOSE_ON_CLOSE 
); 
f.setSize (300, 300); 
f.setLocationRelativeTo (null); 

f.setUndecorated (true); 
f.getRootPane().setWindowDecorationStyle 
(
JRootPane.FRAME 
); 

JPanel panel = new JPanel(); 
panel.setBackground (java.awt.Color.white); 
f.setContentPane (panel); 

DefaultMetalTheme z = 
new DefaultMetalTheme() 
{ 
//inactive title color 
public ColorUIResource 
getWindowTitleInactiveBackground() 
{ 
return new ColorUIResource 
(java.awt.Color.orange); 
} 

//active title color 
public ColorUIResource 
getWindowTitleBackground() 
{ 
return new ColorUIResource 
(java.awt.Color.orange); 
} 
//start ActiveBumps 
public ColorUIResource 
getPrimaryControlHighlight() 
{ 
return new ColorUIResource 
(java.awt.Color.orange); 
} 
public ColorUIResource 
getPrimaryControlDarkShadow() 
{ 
return new ColorUIResource 
(java.awt.Color.orange); 
} 

public ColorUIResource 
getPrimaryControl() 
{ 
return new ColorUIResource 
(java.awt.Color.orange); 
} 
//end ActiveBumps 

//start inActiveBumps 
public ColorUIResource 
getControlHighlight() 
{ 
return new ColorUIResource 
(java.awt.Color.orange); 
} 

public ColorUIResource 
getControlDarkShadow() 
{ 
return new ColorUIResource 
(java.awt.Color.orange); 
} 

public ColorUIResource 
getControl() 
{ 
return new ColorUIResource 
(java.awt.Color.orange); 
} 
//end inActiveBumps 



}; 



MetalLookAndFeel.setCurrentTheme 
(
z 
); 

try 
{ 
UIManager.setLookAndFeel 
(
new MetalLookAndFeel() 
); 
} 
catch (Exception e) 
{ 
e.printStackTrace(); 
} 

SwingUtilities.updateComponentTreeUI (f); 


f.setVisible (true); 


} 
public static void main (final String args[]) 
{ 
SwingUtilities.invokeLater 
(
new Runnable() 
{ 
public void run() 
{ 
main_helper (args); 
} 
} 
); 
} 
} 
+0

非常感謝您的努力,drarkayl。 – Serg