2017-11-27 17 views
0

졸업을위한 최종 연수생으로 회사의 사용자 정의 모양을 만듭니다. 나는 며칠 동안이 부분에 갇혀 있었고 나와 동료는 그것을 고칠 수 없었다.RadioButton 및 CheckBox가 사용자 정의 모양 및 느낌으로 표시되지 않습니다.

사용자 정의 라디오 버튼을 만들기 위해 Look & Feel 체크 박스를 만들려고합니다. 이제 화면/JFrame에 주식을 표시하려고 할 때 표시되지 않습니다.

일단 Look and Feel을 활성화하면 체크 상자와 라디오 버튼이 사라집니다. 그러나 그들에 대한 레이블은 화면에 표시됩니다. Look & Feel의 외측에 체크 박스/라디오를 작성하거나, Nimbus의 Look & Feel를주는 경우, 표시됩니다. 그래서 어떻게 든 내 룩앤필은 일을 깨뜨리고 있습니다. 누구든지 도와 줄 수 있습니까?

이것은 라디오 버튼에 대한 코드입니다.

public class MyRadioBut extends BasicRadioButtonUI { 


    public MyRadioBut() 
    { 
     super(); 
    } 

    public static ComponentUI createUI(JComponent c) { 
     return new MyRadioBut(); 
    } 

    @Override 
    public void installUI(final JComponent c) { 
     super.installUI(c); 
    } 

    public static MyRadioBut createRadio() 
    { 
     MyRadioBut radio = new MyRadioBut(); 

     return radio; 
    } 
    private boolean defaults_initialized = false; 
    @Override 
    public void installDefaults(AbstractButton b) { 
     super.installDefaults(b); 

    } 
} 

확인란의 코드는 동일합니다.

룩앤필 코드;

package iac.lookandfeel; 

import java.awt.Font; 

import javax.swing.SwingUtilities; 
import javax.swing.UIDefaults; 
import javax.swing.UIManager; 
import javax.swing.plaf.basic.BasicLookAndFeel; 


public class MyLookAndFeel extends BasicLookAndFeel { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    static MyButton btn = new MyButton(); 
    static MyProgressBar pb = new MyProgressBar(); 
    static MyLabel lbl = new MyLabel(); 
    static MyTab tab = new MyTab(); 
    static MyRadioBut radio = new MyRadioBut(); 
    static MyComboBox combo = new MyComboBox(); 

    public MyLookAndFeel() { 
     super(); 

    } 

    @Override 
    public String getName() { 
     // TODO Auto-generated method stub 
     return "IAC Look and Feel"; 
    } 

    @Override 
    public String getID() { 
     // TODO Auto-generated method stub 
     return "IAC Look and Feel"; 
    } 

    @Override 
    public String getDescription() { 
     // TODO Auto-generated method stub 
     return "IAC's Look And Feel"; 
    } 

    @Override 
    public boolean isNativeLookAndFeel() { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public boolean isSupportedLookAndFeel() { 
     // TODO Auto-generated method stub 
     return true; 
    } 

    @Override 
    public boolean getSupportsWindowDecorations() 
    { 
     return true; 
    } 
    public static void setAllFonts() { 
     Font defaultFont = UIManager.getDefaults().getFont("Button.font"); 
     int defaultSize = defaultFont.getSize(); 
     Font font = new Font("Serif", Font.PLAIN, 50); 

     UIManager.put("Button.font", font); 

     UIManager.put("RadioButton.font", font); 
     UIManager.put("CheckBox.font", font); 

     UIManager.put("ComboBox.font", font); 
     UIManager.put("Label.font", font); 
     UIManager.put("TabbedPane.font", font); 
     UIManager.put("TextField.font", font); 
     UIManager.put("PasswordField.font", font); 
     UIManager.put("TextArea.font", font); 
     UIManager.put("ProgressBar.font", font); 

    } 

    @Override 
    protected void initClassDefaults(UIDefaults table) 
    { 
     setAllFonts(); 
     MyButton.createButton(); 
     MyProgressBar.createBar(); 
     MyLabel.createLabel(); 
     MyTab.createTab(); 
     MyRadioBut.createRadio(); 
     MyCheckBox.createCheckBox(); 
     MyComboBox.createCombo(); 


     super.initClassDefaults(table); 
     String IACPackage = "iac.lookandfeel."; 
     final String basicPackageName = "javax.swing.plaf.basic."; 
     Object[] uiDefaults = { 
       "ButtonUI", IACPackage + "MyButton", 
       "CheckBoxUI", IACPackage + "MyCheckBox", 
       "ColorChooserUI", basicPackageName + "BasicColorChooserUI", 
       "FormattedTextFieldUI", basicPackageName + "BasicFormattedTextFieldUI", 
       "MenuBarUI", basicPackageName + "BasicMenuBarUI", 
       "MenuUI", basicPackageName + "BasicMenuUI", 
       "MenuItemUI", basicPackageName + "BasicMenuItemUI", 
       "CheckBoxMenuItemUI", basicPackageName + "BasicCheckBoxMenuItemUI", 
       "RadioButtonMenuItemUI", basicPackageName + "BasicRadioButtonMenuItemUI", 
       "RadioButtonUI", IACPackage + "MyRadioBut", 
       "ToggleButtonUI", basicPackageName + "BasicToggleButtonUI", 
       "PopupMenuUI", basicPackageName + "BasicPopupMenuUI", 
       "ProgressBarUI", IACPackage + "MyProgressBar", 
       "ScrollBarUI", basicPackageName + "BasicScrollBarUI", 
       "ScrollPaneUI", basicPackageName + "BasicScrollPaneUI", 
       "SplitPaneUI", basicPackageName + "BasicSplitPaneUI", 
       "SliderUI", basicPackageName + "BasicSliderUI", 
       "SeparatorUI", basicPackageName + "BasicSeparatorUI", 
       "SpinnerUI", basicPackageName + "BasicSpinnerUI", 
       "ToolBarSeparatorUI", basicPackageName + "BasicToolBarSeparatorUI", 
       "PopupMenuSeparatorUI", basicPackageName + "BasicPopupMenuSeparatorUI", 
       "TabbedPaneUI", IACPackage + "MyTab", 
       "TextAreaUI", basicPackageName + "BasicTextAreaUI", 
       "TextFieldUI", basicPackageName + "BasicTextFieldUI", 
       "PasswordFieldUI", basicPackageName + "BasicPasswordFieldUI", 
       "TextPaneUI", basicPackageName + "BasicTextPaneUI", 
       "EditorPaneUI", basicPackageName + "BasicEditorPaneUI", 
       "TreeUI", basicPackageName + "BasicTreeUI", 
       "LabelUI", IACPackage + "MyLabel", 
       "ListUI", basicPackageName + "BasicListUI", 
       "ToolBarUI", basicPackageName + "BasicToolBarUI", 
       "ToolTipUI", basicPackageName + "BasicToolTipUI", 
       "ComboBoxUI", IACPackage + "MyComboBox", 
       "TableUI", basicPackageName + "BasicTableUI", 
       "TableHeaderUI", basicPackageName + "BasicTableHeaderUI", 
       "InternalFrameUI", basicPackageName + "BasicInternalFrameUI", 
       "DesktopPaneUI", basicPackageName + "BasicDesktopPaneUI", 
       "DesktopIconUI", basicPackageName + "BasicDesktopIconUI", 
       "FileChooserUI", basicPackageName + "BasicFileChooserUI", 
       "OptionPaneUI", basicPackageName + "BasicOptionPaneUI", 
       "PanelUI", basicPackageName + "BasicPanelUI", 
       "ViewportUI", basicPackageName + "BasicViewportUI", 
       "RootPaneUI", basicPackageName + "BasicRootPaneUI", 
     }; 
     // UIManager.put(MyLookAndFeel.UI_CLASS_ID, MyButton.class.getName()); 
     table.putDefaults(uiDefaults); 
    } 
} 

IACPackage는 모든 구성 요소에서 사용하는 자체 패키지입니다.

여러분 중 한 명이 아이디어를 얻길 바랍니다.

나는 모양과 느낌을 테스트하는 테스트 GUI가 있습니다.이 확인란과 라디오를 만듭니다.

JCheckBox CBox = 새 JCheckBox ("체크 박스"); JRadioButton Radio = 새 JRadioButton ("라디오");

문자열은 표시하지만 아이콘은 표시하지 않습니다.

+0

"모양과 느낌"이란 정확히 무엇을 의미합니까? – Stultuske

+0

Java 응용 프로그램에 대한 사용자 정의 모양과 느낌을 만들고 있습니다. Nimbus, WebLAF와 같은 것들. 기존의 Look & Feel에 대한 사용자 정의 스킨. – Maikel

+0

이 구성 요소에 맞춤 스팅을 만들지 않았다고 생각합니다. – jhonatan2760

답변

0

직접 고쳤습니다.

Icon defaultIcon; 
defaultIcon = UIManager.getIcon("CheckBox.icon"); 
UIManager.put("CheckBox.icon", defaultIcon); 

나는 이것을 UI 관리자의 기본 아이콘을 얻는 데 사용했으며 이후에는 put 문을 사용하여 다시 넣었습니다. 꽤 어리석은 해결책 그러나 그것은 일한다!