首页 > 解决方案 > 图形,屏幕闪烁

问题描述

屏幕将所有内容呈现在正确的位置,但整个屏幕在打开时会闪烁。如果我不添加“ g.drawImage(img,0,0,null) ;” 然后它工作正常。我知道也许我必须使用双缓冲,但我第一次使用 Swing 并且不知道如何正确使用双缓冲。“setDoubleBuffered(true)”不起作用。先感谢您。

import java.awt.*;
import java.io.File;

import javax.imageio.ImageIO;
import javax.swing.*;

public class GraphApp extends JFrame {

    int x,y;
    int ax,by;
    Image img = Toolkit.getDefaultToolkit().getImage("C:\\Users\\User\\IdeaProjects\\vychmat\\images\\Background.png");

    public GraphApp(){
        setTitle("Лабораторная работа №2");
        setSize(900,700);
        try{
            setIconImage(ImageIO.read(new File("C:\\Users\\User\\IdeaProjects\\vychmat\\images\\icon.png")));
        }
        catch(Exception e){
            e.getMessage();
        }
        setVisible(true);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void paint(Graphics g){
        g.drawImage(img,0,0,null);
        g.setColor(Color.BLACK);
        g.drawString("Y", 210, 250);
        g.drawString("X", 390, 440);

        if(x==205&&y==425){
            g.drawString("Origin(0,0)", 205, 425);
        }
        //OY
        g.drawLine(200, 250, 200, 600);

        //OX
        g.drawLine(30,425,380,425);

        g.setFont(new Font("Palatino Linotype", Font.BOLD,25));
        g.drawString("Решение уравнений с заданной точностью",150,75);

        repaint();
    }

    public static void main(String[] args){
        new GraphApp();
    }
}

标签: javaswingawt

解决方案


推荐阅读