졸업을위한 최종 연수생으로 회사의 사용자 정의 모양을 만듭니다. 나는 며칠 동안이 부분에 갇혀 있었고 나와 동료는 그것을 고칠 수 없었다.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 ("라디오");
문자열은 표시하지만 아이콘은 표시하지 않습니다.
"모양과 느낌"이란 정확히 무엇을 의미합니까? – Stultuske
Java 응용 프로그램에 대한 사용자 정의 모양과 느낌을 만들고 있습니다. Nimbus, WebLAF와 같은 것들. 기존의 Look & Feel에 대한 사용자 정의 스킨. – Maikel
이 구성 요소에 맞춤 스팅을 만들지 않았다고 생각합니다. – jhonatan2760