2016-07-30 15 views
0

Java에서 UIManager를 사용하여 모든 팝업을 GUI로 표시하려고하고 오류 GUI가 동일한 색상을 사용하려고합니다. 문제는 윈도우 스타일을 사용할 때 버튼 색상을 변경할 수없는 것뿐 아니라 GUI 제목 표시 줄을 변경할 수 없다는 것입니다.Java Windows UIManager

enter image description here

코드 :. 그것의 비교적 간단, 내가 UIManager.getLookAndFeelDefaults를 호출하고있어() ("Button.background", buttonColor)을 넣어 안다 몇 가지 다른 UI 변경됩니다. 주요 아무것도 ...

답변

1

당신이 JOptionPane를 사용하는 경우,

당신 변화 자신의 제목을 사용하려면이 형식을 사용하여 제목입니다.

JOptionPane.showMessageDialog(null, "This is the message", "This is the title", JOptionPane.YES_NO_OPTION);

는 다른 대화 또는 모든 일에 버튼을 변경 dialog-

UIManager UI=new UIManager(); 
UI.put("OptionPane.background", Color.white); 
UI.put("Panel.background", Color.white); 
JOptionPane.showMessageDialog(null,"Text","SetColor",JOptionPane.YES_NO_OPTION); 

의 바탕색을 다시 설정 자신의 JDialog를을 만들고 원하는 버튼 특성을 설정합니다.

+0

새로운 UIManger 인스턴스를 만드는 이유는 무엇입니까? 또한 내가 일하는 sorta 제대로 작동하도록 UIManager 가져올 수없는 경우 내 자신의 대화 상자 구현. – DarkGuardsman

+1

자신 만의 대화 상자를 사용하는 경우 UImanager 인스턴스가 필요하지 않습니다. – Sirsendu

+0

예,하지만 UIManager는 작업을 수행 할 수있는 경우 프로세스를 단순화합니다. – DarkGuardsman

2

UIManager.getLookAndFeelDefaults(). (buttonColor을 "Button.background")를 넣어 작동하지 않는 이유를 이해가 안 JOptionPane의 대화 상자에서 버튼의 색상

. 그것해야합니다. 아마도 부작용 일 수 있습니다. 우리는 모든 코드를 볼 수 없습니다.
이 간단한 코드를 사용하면 녹색 버튼 만 표시됩니다.

package swing.uimanager; 

import java.awt.Color; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import javax.swing.UIDefaults; 
import javax.swing.UIManager; 

public class JFrameWithUIManger extends JFrame { 

    public static void main(String[] args) { 
     new JFrameWithUIManger(); 
    } 

    public JFrameWithUIManger() { 
     final UIDefaults lookAndFeelDefaults = UIManager.getLookAndFeelDefaults(); 
     lookAndFeelDefaults.put("Button.background", Color.GREEN); 

     add(new JButton("A button")); 
     pack(); 
     setVisible(true); 
     JOptionPane.showMessageDialog(this, "hello I am a message dialog"); 
     JOptionPane.showConfirmDialog(this, "hello I am a question dialog", "do you like me ?", JOptionPane.YES_NO_OPTION); 
    } 
} 

제목의 흰색 배경에는 색상 (흰색)이 있으므로 작동하는 것 같습니다. 키 - 값 문제 일 수 있습니다. 우리가 더 잘 이해하고 싶다면 게시하십시오.

편집

당신에게 코드를 본 후, 나는 당신의 문제를 이해했다. 사용 된 모양과 느낌입니다. 기본 룩앤필 (메탈)을 사용하지 않습니다.
아마도 스윙의 모든 모양과 느낌은 태어난 동등하지 않습니다.
일부 옵션 및 혼합 옵션은 일부 모양과 느낌에 의해 지원되지만 다른 모양과 느낌에서는 지원되지 않습니다.
기본 룩앤필을 사용하는 경우 호환성 문제가 적어 야합니다.
제대로 지원하는 경우 알 수있는 가장 좋은 방법은 몇 가지 공식 문서에보고하는 것입니다하지만 그것에 대해 많은 정보는 오류, 건조, 당신은 당신의 코멘트에 게시 된 링크에서

자세한하지 않는 것이 사실이다 : http://nadeausoftware.com/articles/2008/11/all_ui_defaults_names_common_java_look_and_feels_windows_mac_os_x_and_linux#Button의 경우 테이블에 표시된 키가 값이 있거나 수정할 수 있지만 키만 LAF에 있음을 의미하지는 않습니다.
각 LAF는 키 및 키와 관련된 값을 변경할 수있는 가능성을 고려해야합니다.

Windows LAF를 사용하여 배경색 단추 만 설정하려고했는데 작동하지 않습니다. 따라서 부작용은 아니지만 Windows LAF의 경우이 기능에 대한 지원이 누락 된 것처럼 보입니다.

어쨌든 고전적인 금속 모양과 느낌보다 공식적이고 멋지며 최근의 유연한 모양과 느낌을 원한다면 Nimbus에 관심을 가질 수 있습니다. Nimbus document
그것은 내가 당신과 동의 자바 SE 6 업데이트 10

부터 사용할 수는, 금속 못생긴입니다. 그러나 창문 LAF 대신에 후광을 사용하지 않는 이유는 무엇입니까? 훌륭합니다. Nimbus를 사용하여 lAF의 일부 값을 수정하는 코드를 시도했지만 제대로 작동하는 것 같습니다. 어쩌면 조정할 수있는 사소한 수정이있을 수 있지만 기본은 훌륭합니다.

+0

JOptionPane을 같은 방법으로 만들고 여기에 UI 코드 https가 있습니다. //gist.github.com/DarkGuardsman/9820dedcfd6dbdfbd4138bf0df3007b9 나머지는 닫힌 소스이므로 모든 것을 공유 할 수 없습니다. 그러나, 나는 다른 이상한 오류를 지금 당연히 느끼고있어 부작용이라고 생각한다. 예를 들어 JPanel은 투명하게 변하지 않을 것입니다. – DarkGuardsman

+0

기본 금속 모양과 느낌은 시각적으로 좋지 않습니다. Windows 2000 그래픽의 선상에있는 것입니다. 그래서 여러 문서에서 배경색 변경을 지원하는 Windows 스타일을 사용하고 있습니다. 금속 모양과 느낌을 바꾸는 것만으로도 버튼이 훨씬 작아 지도록 크기를 조절할 수 있습니다. http://nadeausoftware.com/articles/2008/11/all_ui_defaults_names_common_java_look_and_feels_windows_mac_os_x_and_linux#Button – DarkGuardsman

+0

: 이러한 모든 UIManager 세그먼트가 어떻게 처리되는지에 대해서는 약간의 일관성을 기대할 수 있습니다. 색상 변경과 같은 기본적인 기능도 있습니다. 후광에 관해서는 내가 UI에서 찾고있는 것이 아니라 나머지 GUI의 모든 비주얼을 너무 많이 변경합니다. 게다가 나는 후광 키가 다르다고 들었으므로 모든 핵심 항목을 변경해야합니다. 도와 주셔서 감사합니다. 귀하의 의견은 유용했습니다. – DarkGuardsman