我有一个应用程序,在我的框架上一次显示10-50个图像,周围有框。我可以拖动图像并将它们放在数组中的新位置,框架将更新整个时间。我发这篇文章的原因是因为我的3440x1440显示器使这个程序滞后,我的旧1920x1080根本没有滞后。
这是一个显示我正在谈论的内容的gif: https://gfycat.com/InferiorFrenchArachnid
这是我的代码,用于将图像及其周围的框绘制到框架中:
public void paintComponent(Graphics g){
super.paintComponent(g);
if (model.getCarPath() == null){
viewImage = createImage(1000,1000);
viewGraphics = viewImage.getGraphics();
viewGraphics.setColor(color);
viewGraphics.fillRect(0, 0, 1000, 1000);
}
try{
if (model.getCarPath() != null){
if(viewImage==null){
viewImage = createImage(1000,1000);
viewGraphics = viewImage.getGraphics();
}
viewGraphics.setColor(color);
viewGraphics.fillRect(0, 0, 1000, 1000);
viewGraphics.setColor(Color.blue);
for (int i = 0; i < model.getPictureArray().size()-1; i++){
//draw the images
viewGraphics.drawImage(x,y,width,height, this);
}
// draws the selected picture over top of the rest
viewGraphics.drawImage(model.getSelected().getImage(), (int)x,
(int)y, (int)width,
(int)height, this);
if (model.doesLineExist() == true){
// draws the line next to the pictures to show where the picture will be dropped
// when the mouse is released
viewGraphics.fillRect((int)model.getLine().getX(), (int)model.getLine().getY(), 5,
(int)model.getLine().getHeight());
}
}
} catch (Exception e){ }
g.drawImage(viewImage, 0, 0, this);
}
如果不发布我的全部代码,我认为这包含效率最低的部分。你有没有看到我可以改变的东西会阻止程序滞后?