如何設置自定義窗口的幀頭?使用自定義紋理製作JFrame
取而代之的是這個藍色標題,我想使用圖像中的紋理。
代碼:
final JFrame frame = new JFrame();
BufferedImage image = ImageIO.read(new File("d:/texture.bmp"));
默認窗口:
如何設置自定義窗口的幀頭?使用自定義紋理製作JFrame
取而代之的是這個藍色標題,我想使用圖像中的紋理。
代碼:
final JFrame frame = new JFrame();
BufferedImage image = ImageIO.read(new File("d:/texture.bmp"));
默認窗口:
我不認爲你可以做一個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);
}
}
);
}
}
非常感謝您的努力,drarkayl。 – Serg
你應該嘗試的JavaFX對Java中創建真棒窗口。
http://www.oracle.com/technetwork/java/javafx/samples/index.html
我只需要替換窗口的標題。在我的應用程序中,窗口的其餘部分充滿了圖像(動畫)。 – Serg
我還沒有嘗試過自己,但也許你可以通過周圍的[Synth外觀和現場]插手實現你在找什麼( http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/synth.html)。 –