[英]Adding Jlabel to java applet
我使用以下代码向Java小程序添加标签。 这些行在paint(Graphics g)方法中:
ImageIcon icon = new ImageIcon(s);
JLabel myLabel = new JLabel(icon);
add(myLabel);
当我调用add(myLabel)时,屏幕将被清除,而我之前绘制的所有内容都将消失。 为什么?
这些行在paint(Graphics g)方法内部:
您永远不要在paint()方法中向GUI添加组件。
另外,如果您需要自定义绘画,则应该重写paintComponent()而不是paint()。
我建议您阅读Swing教程 。 关于以下内容:
可以帮助您。
Using Layout Managers
器还有一个环节。 我不知道它是什么免费设计,但我怀疑您应该使用它。
只是添加@camickr所说的内容。
切勿在paint
方法上添加组件。 每次绘制组件时,都会执行以下代码
ImageIcon icon = new ImageIcon(s);
JLabel myLabel = new JLabel(icon);
add(myLabel);
这样,您可以100%确保在每次绘制组件时都添加新的JLabel时,某个时候内存将耗尽。 创建父组件时,应添加标签。 如果您想在应用程序中制作动画,那么建议您加载这些图像并将它们放在一个List
,您可以从paintComponent
方法访问该List
。
List<JLabel> images = new ArrayList<JLabel>();
// populate images when the application needs them...
// ...
@Override
public void paintComponent(Graphics g){
// get the image your want to draw
JLabel imageToDraw = images.get(imageIndex);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.