我有一个面板,其中包含已添加到其中的自定义组件。它正确绘制,除非正在拖动组件(有自己的鼠标滑块),它开始绘制奇怪。
有趣的是,如果我稍微调整父面板的大小,它现在将按预期绘制。我知道父小组正在通过
进行重新绘制"engines": {
"node": "0.10.18",
"npm": "1.3.8"
},
和面板内的打印声明
super.paintComponent(g);
方法。我尝试重新验证组件被拖动时(因为组件重新设置其边界)它变得无效。我仍然没有成功,并想知道是否有人可以提供帮助。
是否有某些地方我没有正确重新绘制可能导致此行为的地方?
另外作为附录,我在面板及其组件上都有一个鼠标监听器,是否有一种方法可以在单击一个组件时面板鼠标监听器也响应(除了从组件返回到父类)
以下是我遇到问题的一个工作示例
paintComponent(Graphics g):
答案 0 :(得分:2)
父面板实际上并未完全自动重新绘制。调用roomNumber
,但如果您检查裁剪,例如:
#include<string>
using std::string;
class Strarr {
private:
string *items;
int size;
public:
Strarr() {
items = new string[0];
size = 0;
}
~Strarr() {
delete[] items;
}
};
int main() {
Strarr test;
test.~Strarr();
}
你会看到只有较小组件下方的区域被绘制。 (组件不是不透明的,因此父组件需要在其下方绘制区域)。您需要为父面板明确调用paintComponent()
:
System.out.println(g.getClipBounds());
(或者使用指定区域的repaint()
变体,如果父组件的绘制成本高,并且可以优化部分绘制。)