图形,屏幕闪烁

时间:2018-11-17 12:30:10

标签: java swing awt

屏幕将所有内容呈现在正确的位置,但是打开时整个屏幕都会闪烁。如果我不添加“ 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();
    }
}

0 个答案:

没有答案