Java Swing-为什么JComponent不会显示?
我正在尝试扩展一个类,最终生成一个自定义按钮。我在几个地方读到,为了获得更好的多态性,最好将继承权扩展到尽可能高的位置,因此我尝试扩展JComponent: 调用这个的代码是:Java Swing-为什么JComponent不会显示?,java,swing,jbutton,extend,jcomponent,Java,Swing,Jbutton,Extend,Jcomponent,我正在尝试扩展一个类,最终生成一个自定义按钮。我在几个地方读到,为了获得更好的多态性,最好将继承权扩展到尽可能高的位置,因此我尝试扩展JComponent: 调用这个的代码是: b1 = new TestButton(); basePanel.add(b1,gbc); // (gbc is GridBagConstraints object) 问题是,我的JComponent没有显示在我的布局中。如果我将类扩展为JButton,则不会出现问题。怎么回事 更新: 仅供参考,这是一
b1 = new TestButton();
basePanel.add(b1,gbc); // (gbc is GridBagConstraints object)
问题是,我的JComponent没有显示在我的布局中。如果我将类扩展为JButton,则不会出现问题。怎么回事
更新:
仅供参考,这是一个noob概念性问题,显然我还远远不够精通
这里有一张图片可以描述。唯一改变的是扩展
应该是一个紫色的填充块,与底部的黄色块高度相同
正在发生的是一个默认大小的块,它没有背景——黑色来自JFrame
在JComponent应该是什么的地方,您希望看到什么?当您扩展JButton时,您将获得它的所有图形,但您创建了一个空组件,其中没有任何内容。尝试在组件中放置一些东西,例如JLabel或类似的东西,您希望在JComponent应该位于的位置看到什么?当您扩展JButton时,您将获得它的所有图形,但您创建了一个空组件,其中没有任何内容。尝试在组件中添加一些东西,如JLabel或类似的如果您想要JButton的功能,您仍然需要扩展JButton。否则,每个人都可以扩展对象并期待一切。如果您想要JButton的功能,您仍然需要扩展JButton。否则,每个人都可以扩展对象并期望得到一切。它是一个空白组件,基本上是一个模板。它没有属性。您必须通过覆盖paintComponent方法添加自己的图形元素,然后通过覆盖update方法添加逻辑元素。它是一个空白组件,基本上是一个模板。它没有属性。您必须通过重写paintComponent方法来添加自己的图形元素,然后通过重写update方法来添加逻辑元素。JComponent及其子类之间的主要区别之一是后者有UI委托,而JComponent没有。请注意,仅当组件不透明且仅由JComponent或ComponentUI实现的子类使用颜色。因此,您必须重写paintComponent以遵守此属性。JComponent及其子类之间的主要区别之一是后者具有UI委托,而JComponent没有。请注意,仅当组件不透明且仅由JComponent或ComponentUI实现的子类使用颜色。因此,您必须重写paintComponent以遵守此属性。或者按原样使用JButton:
JButton b1 = new JButton("Enter JButton text here");
basePanel.add(b1,gbc);
或者,如果您希望更改某些属性并根据自己的首选项对其进行自定义,请扩展JButton类:
public class TestButton extends JButton {
private static final long serialVersionUID = 1L;
public TestButton(String buttonText)
{
super(buttonText);
}
}
按原样使用JButton:
JButton b1 = new JButton("Enter JButton text here");
basePanel.add(b1,gbc);
或者,如果您希望更改某些属性并根据自己的首选项对其进行自定义,请扩展JButton类:
public class TestButton extends JButton {
private static final long serialVersionUID = 1L;
public TestButton(String buttonText)
{
super(buttonText);
}
}
是调试此类问题时使用的好工具。是调试类似问题时使用的一个很好的工具。我所期望的是一个类似于JPanel的封闭区域,在那里我可以设置背景并将内容粘贴到其中,但显然情况并非如此:感谢您的提示,对我来说听起来很好-我将在几分钟后点击代码。好的,插入一个按钮,但预期结果不难解释。JComponent是否会自动填充gridbag单元格?约束设置为两者都有。我所期望的是一个类似于JPanel的封闭区域,在那里我可以设置背景并将内容粘贴到其中,但显然情况并非如此:感谢您的提示,听起来不错-我会在几分钟后点击代码。好的,插入一个按钮,但预期结果不难解释。JComponent是否会自动填充gridbag单元格?约束设置为两者。我不一定要JButton,我只想要一个背景块来填充我的布局单元格…JComponent已经有了一个setBackground方法…我不一定要JButton,我只想要一个背景块来填充我的布局单元格…JComponent已经有了一个setBackground方法…啊,好的。那么JComponent是否会自动填充gridbag单元格。。。如果约束同时设置为两个。是什么使一个对象具有这种填充行为?同意垃圾神的说法——建议在Swing中覆盖更新是错误的-1啊,好的。那么JComponent是否会自动填充gridbag单元格。。。如果约束同时设置为两个。是什么使一个对象具有这种填充行为?同意垃圾神的说法——建议在Swing中覆盖更新是错误的-1+1欢呼这是一半的秘密,很清楚。有什么原因它没有填满它的gridbag单元格吗?对不起,我不是GridBagLayout的人,但我在猜你选择的L&F的PanelUI中有什么东西。安可能会有所帮助。+1干杯这是一半的秘密,奎 没问题。有什么原因它没有填满它的gridbag单元格吗?对不起,我不是GridBagLayout的人,但我猜你选择的L&F的PanelUI中有什么东西。An可能会有所帮助。