java是框架。revalidate()在事件后获取输出是否重要?
因此,我编写了一个代码,在单击帧南部区域的按钮后,会得到一个矩形
但由于这个原因,在点击按钮后,代码似乎不起作用
public void actionPerformed(ActionEvent ev){
Drawing d = new Drawing();
frame.add(d);
frame.repaint();
}
以及在块内添加revalidate()
public void actionPerformed(ActionEvent ev){
Drawing d = new Drawing();
frame.add(d);
frame.revalidate();
frame.repaint();
}
现在代码运行得很好,但是从我研究的地方来看,他们没有使用revalidate()
,他们的代码运行得很好
为什么会这样
# 1 楼答案
因此,您引用的示例是使用自定义绘制方法绘制组件。这不会(直接)影响组件的大小或位置,因此不需要容器来执行新的布局传递
有关详细信息,请参见Performing Custom Painting和Painting in Swing
您的代码正在向容器添加新组件,因此您需要告知容器何时需要重新布置容器
所以,从JavaDocs