0

カスタム ウィンドウのフレーム ヘッダーを設定するには?

この青いヘッダーの代わりに、画像のテクスチャを使用したいと思います。

コード:

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

デフォルトのウィンドウ:

ここに画像の説明を入力

4

2 に答える 2

3

JFrame のタイトル バーの色や画像については、少なくともネイティブ コードを使用してプラットフォーム固有のソリューションを実装しない限り、何もできないと思います。これは、JFrame が実際にネイティブ ウィンドウ システムを使用してウィンドウを作成するためです。

内部フレームに関しては、Java によって制御されるウィンドウ内でレンダリングされるコンポーネントであるため、カスタマイズできることは理にかなっています。実際、UI マネージャーで設定できるJInternalFrame プロパティは多数あります。

そこに画像を配置することはできません。ただし、 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 );
}
}
);
}
}
于 2013-06-28T07:44:18.910 に答える
1

Javaで素晴らしいウィンドウを作成するには、JavaFXを試してください。

http://www.oracle.com/technetwork/java/javafx/samples/index.html

于 2013-06-21T22:23:59.700 に答える