性能对比 , JLabel竟然比Label快好多
加载9980个Label 用时 22079 毫秒
package labelJLabel;
import java.awt.*;
import java.awt.event.*;
public class 加载多个Label的用时 {
public static void main(String...arguments) {
long beginning = System.currentTimeMillis();
Frame frame = new Frame("加载一万个Label的用时");
frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent event) {frame.dispose();System.exit(0);}});
frame.setBounds(100,50,1600,800);
frame.setLayout(new FlowLayout());
for(int c=0;c<9980;c++) {
Label lb = new Label("Label-"+c); lb.setBackground(Color.PINK);
frame.add(lb);
}
frame.setVisible(true);
long cost = System.currentTimeMillis()-beginning;
System.out.println("用时 "+cost+" 毫秒");
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/d7abfef4f8f443059400c79c376c372d.png)
加载9980个JLabel 才用时 695 毫秒
package labelJLabel;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JLabel;
public class 加载多个JLabel的用时 {
public static void main(String...arguments) {
long beginning = System.currentTimeMillis();
Frame frame = new Frame("加载一万个JLabel的用时");
frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent event) {frame.dispose();System.exit(0);}});
frame.setBounds(100,50,1600,800);
frame.setLayout(new FlowLayout());
for(int c=0;c<9980;c++) {
JLabel lb = new JLabel("JLabel-"+c); lb.setBackground(Color.PINK); lb.setOpaque(true);
frame.add(lb);
}
frame.setVisible(true);
long cost = System.currentTimeMillis()-beginning;
System.out.println("用时 "+cost+" 毫秒");
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/8c469476719d42fb90f419f2f5965e74.png)
加载 5万个JLabel 用时 19394 毫秒 比9000个Label还快, 没有windows句柄限制
package labelJLabel;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JLabel;
public class 加载多个JLabel的用时 {
public static void main(String...arguments) {
long beginning = System.currentTimeMillis();
Frame frame = new Frame("加载一万个JLabel的用时");
frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent event) {frame.dispose();System.exit(0);}});
frame.setBounds(100,50,1600,800);
frame.setLayout(new FlowLayout());
for(int c=0;c<50000;c++) {
JLabel lb = new JLabel("JLabel-"+c); lb.setBackground(Color.PINK); lb.setOpaque(true);
frame.add(lb);
}
frame.setVisible(true);
long cost = System.currentTimeMillis()-beginning;
System.out.println("用时 "+cost+" 毫秒");
}
}