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의 일부 값을 수정하는 코드를 시도했지만 제대로 작동하는 것 같습니다. 어쩌면 조정할 수있는 사소한 수정이있을 수 있지만 기본은 훌륭합니다.
새로운 UIManger 인스턴스를 만드는 이유는 무엇입니까? 또한 내가 일하는 sorta 제대로 작동하도록 UIManager 가져올 수없는 경우 내 자신의 대화 상자 구현. – DarkGuardsman
자신 만의 대화 상자를 사용하는 경우 UImanager 인스턴스가 필요하지 않습니다. – Sirsendu
예,하지만 UIManager는 작업을 수행 할 수있는 경우 프로세스를 단순화합니다. – DarkGuardsman