我想基于现有的Swing JComponent创建一个新的Swing
JComponent,但使用不同的API。换句话说,我不想扩展现有组件,因为我不想访问它的API。
这里有一个例子来阐明我的需求:
替换为JCheckBox
显示两个按钮ON / OFF。这可以基于 预先配置的
JCommandButtonStrip
(此处提供一些信息),但要公开与完全相同的API
JCheckBox
。JCommandButtonStrip
不得更改其配置。
解决此类问题的最佳方法是什么?
说明:
有人指出,我写的关于API的内容还不清楚。
当然,JComponent
有许多公共领域和方法可供每个子类使用。然后,的每个子类都JComponent
可以添加自己的公共字段和方法。例如,AbstractButton
添加isSelected()
方法,而JCommandButtonStrip
添加getButtonCount()
方法。
所以,我的意思是:我想创建一个基于现有JComponent
子类的新子类。除了那些方法之外,我不想被我的班级公开。然后,我想向中添加一些公共方法。MyJComponent``ExistingJComponent``ExistingJComponent``JComponent``MyJComponent``MyJComponent
请注意,我不是在寻找JCommandButtonStrip
/ JCheckBox
示例的替代方法。我对解决这种问题的一般方法感兴趣。
您可以创建一个扩展JComponent的新类,然后在构造函数内部插入一个复选框。
public class MyCoolCheckbox extends JComponent{
private JCheckBox checkbox;
public MyCoolCheckbox(String label) {
checkbox= new JCheckBox(label);
this.setLayout(new BorderLayout());
this.add(checkbox, BorderLayout.CENTER);
}
}
这显然是不完整的,您可能需要将某些方法委托给孩子。可能会变得凌乱。如果您按alt-
ins键(默认情况下)然后进行委派,然后选择复选框成员并选择要委派的条目,则像IntelliJ IDEA这样的IDE将为您生成所有这些信息。例如:
public void setForeground(Color fg) {
checkbox.setForeground(fg);
}
public void setBackground(Color bg) {
checkbox.setBackground(bg);
}
public Color getForeground() {
return checkbox.getForeground();
}
public Color getBackground() {
return checkbox.getBackground();
}
请记住,由于子级位于Swing组件树中,因此其他代码也可以访问这些子级,即使它们被标记为私有。
((JCheckBox)myCoolCheckbox.getComponents()[0]).setSelected(true);
Spring boot maven插件正在使用paketo builder构建图像。 我想做的是在这个构建器正在做的事情上添加另一个步骤。我已经创建了自己的构建包,并试图创建包含基本构建包的构建器。 我遇到的第一个问题是,当试图从builder.toml创建一个构建器时,会出现这样的错误: 另一个问题是,即使这样做有效,我想我仍然必须指定来自paketo:base的所有order.group。 是
我试图建立一个专栏,将根据另一个。新列应反映满足某些标准的值,并在值不符合标准的地方放置0。 例如,名为银行余额的列将有负值和正值;新列透支将为相应行提供负值,余额大于0时为0。 最终结果应该是这样的。
基于dataframe列val_1值,查看其他列col_0-10标签前缀,然后创建另一列Mycl。 数据帧看起来像: 应用逻辑后所需的数据帧: 我是trid,但这不起作用:df['mycol']=df['col'df['val_1']。aType(str)] DDL生成DataFrame: 谢谢!
问题内容: 我有2个表:projects,project_types。 如何基于project_type_id创建一个名为projectTypeName的虚拟字段,其名称来自projectType,对于那些project_type_id = 0的字段,它将为“” 我有这个 它正确显示为“ sales”,但我不想一一指定。 谢谢 问题答案: 这对我有用
问题内容: 我有一个看起来像这样的数组。这是一个二维数组。 我想使用此信息来创建一个新的三维数组,如下所示。 请对此有任何帮助。我陷入困境,需要弄清楚如何使用此原始数组创建新数组。因此,基本上,我将每台计算机上的所有作业分组在一起,而这些作业的密钥取决于它们在原始阵列中的状态。因此,如果原始阵列上有一个键为2的作业,而该机上没有其他作业具有更高的键,则它将变成该作业的键0,并使用该机器名创建一个新
问题内容: 我想在数组中的每个索引处创建一个大小相同的数组。用Java做到这一点的最佳方法是什么? 例如,如果为5且值为boolean ,则数组应为: 问题答案: 您可以尝试以下方法: 手动数组填充的第二种方法: