2013-06-21 5 views
0

사용자 정의 윈도우의 프레임 헤더를 설정하는 방법은 무엇입니까?사용자 정의 텍스처로 JFrame 만들기

대신 파란색 머리글 대신 이미지에서 텍스처를 사용하고 싶습니다.

코드 :

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

기본 창 :

enter image description here

+0

자신을하지만 어쩌면 있습니다 ([신디 모양과 필드] 주변 간섭에 의해 당신이 찾고있는 무엇을 달성 할 수 http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/synth.html). –

답변

3

난 당신이 적어도 플랫폼 특정 솔루션을 구현하는 네이티브 코드를 사용하지 않고 JFrame의 제목 표시 줄의 색상이나 이미지에 대해 아무것도 할 수 있다고 생각하지 않습니다. 이는 JFrame이 실제로 네이티브 윈도우 시스템을 사용하여 윈도우를 생성하기 때문입니다.

내부 프레임의 경우 자바에서 제어하는 ​​창 내부에서 렌더링 된 구성 요소이므로 사용자 정의 할 수있는 것이 좋습니다. 실제로 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