2017-11-27 7 views
0

私は、卒業の最終的な訓練船として会社のカスタムルックアンドフィールを作成しています。私は数日間この部分に立ち往生していました。私と私の同僚はそれを直すことができません。カスタムルックアンドフィールでRadioButtonとCheckBoxが表示されない

ルックアンドフィールのカスタムラジオボタンチェックボックスを作成しようとしています。今では、在庫のものを画面/ JFrameに表示したいときは表示されません。

ルックアンドフィールを有効にすると、チェックボックスとラジオボタンが消えます。しかし、彼らのラベルは画面に表示されます。ルック・アンド・フィールの外にチェック・ボックス/ラジオを作成したり、ニンバスのルック・アンド・フィールを与えたりすると表示されます。だから何とか私のルックアンドフィールは物を壊しています。誰も助けることができますか?

これはラジオボタンのコードです。

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( "Radio");

文字列は表示されますが、アイコンは表示されません。

+0

「ルックアンドフィール」とは、具体的にはどういう意味ですか? – Stultuske

+0

私は自分のJavaアプリケーションのためのカスタムルックアンドフィールを作成しています。 Nimbus、WebLAF、そのようなもの。既存のルックアンドフィールのカスタムスキンです。 – Maikel

+0

私はあなたがこれらのコンポーネントにカスタムスケーリングをしていないと思います。 – jhonatan2760

答えて

0

自分で修正しました。

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

これを使用して、UIマネージャーからデフォルトアイコンを取得しました。その後、putステートメントで戻しました。かなり愚かな解決策ですが、それは動作します!

関連する問題