gpt4 book ai didi

java - 如何创建自定义 JComponent(如 JButton),忽略当前的外观

转载 作者:行者123 更新时间:2023-12-01 20:54:46 25 4
gpt4 key购买 nike

我有一个具有默认外观(insubstantial)的应用程序,并且设置了许多默认值,例如:

    UIManager.put( "List.foreground", Color.BLACK );
UIManager.put( xyz, zyzLEF );
//around 150 istructions like that

这个应用程序很大,并且有许多根据客户需求定制的覆盖,但是现在我需要使用一些设置(Foreground创建自己的JButton) >背景字体等),由于默认设置而无法按照我想要的方式工作(例如,setOpaque(true||false) ) 根本没有任何效果)。

所以我尝试创建自己的 JButton 忽略默认的外观和感觉,例如:

public class MyButton extends JButton {
public MyButton(String text, int lineHeight)
{
super(text);
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
setBackground(Color.WHITE);
//foo
setOpaque(true);
}

@Override
public String getUIClassID() {
return "MyButton";
}

启动时:

UIManager.put("MyButton","javax.swing.plaf.ButtonUI");

这会导致此错误:

UIDefaults.getUI() failed: createUI() failed for com.foo.MyButton[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=null,paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Hello World,defaultCapable=true] java.lang.reflect.InvocationTargetException
java.lang.Error
at javax.swing.UIDefaults.getUIError(UIDefaults.java:732)
at javax.swing.MultiUIDefaults.getUIError(MultiUIDefaults.java:130)

我敢打赌 UIManger 的委托(delegate)是错误的,但我不知道如何忽略自定义项目的当前默认值。有什么想法吗?

感谢指点

最佳答案

你不能放这个

UIManager.put("MyButton","javax.swing.plaf.ButtonUI");

因为 ButtonUI 类(实际上它来自 ComponentUI 类)的静态方法 creatUI() 抛出错误

public static ComponentUI createUI(JComponent c) {
throw new Error("ComponentUI.createUI not implemented.");
}

所以使用javax.swing.plaf.basic.BasicButtonUI

关于java - 如何创建自定义 JComponent(如 JButton),忽略当前的外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42530815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com