gpt4 book ai didi

java - 使用自定义纹理制作 JFrame

转载 作者:行者123 更新时间:2023-12-01 18:47:19 27 4
gpt4 key购买 nike

如何设置自定义窗口的框架标题?

我想使用图像中的纹理,而不是这个蓝色标题。

代码:

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

默认窗口:

enter image description here

最佳答案

我认为您无法对 JFrame 标题栏中的颜色或图像执行任何操作,至少在不使用 native 代码来实现特定于平台的解决方案的情况下是这样。这是因为 JFrame 实际上使用您的 native 窗口系统来创建窗口。

对于内部框架,您能够自定义它是有意义的,因为它是在由 Java 控制的窗口内部呈现的组件。事实上,有很多JInternalFrame properties您可以在 UI 管理器中设置。

您不能将图像放在那里。不过你可以尝试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 );
}
}
);
}
}

关于java - 使用自定义纹理制作 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17245162/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com