我正在試圖製作一個簡單的GUI程序而不使用JComponents。 目前,我有一個BufferedImage,我畫在屏幕外,以便它不閃爍(或者我想)。設置背景時屏幕閃爍
我做了一個新的節目在這裏複製的問題:
package Main;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.*;
public class Main {
private final static JFrame frame = new JFrame();
private final static Panel panel = new Panel();
public static void main(String[] args) {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.setPreferredSize(new Dimension(1000, 750));
frame.setContentPane(panel);
frame.pack();
frame.setVisible(true);
while (true) {
panel.setBackgroundColour(Color.WHITE);
panel.setBackgroundColour(Color.BLACK);
panel.repaint();
}
}
private static class Panel extends JPanel {
private final BufferedImage offScreen = new BufferedImage(1000, 750, BufferedImage.TYPE_INT_ARGB);
private final Graphics graphics = offScreen.getGraphics();
@Override
protected void paintComponent(Graphics graphics) {
graphics.drawImage(offScreen, 0, 0, null);
}
public void setBackgroundColour(Color colour) {
graphics.setColor(colour);
graphics.fillRect(0, 0, 1000, 750);
}
}
}
在上面的例子中,我做了屏幕變黑,然後白(屏幕外)。 我期望的是paintComponent()只顯示白色屏幕。 而是顯示黑屏,但一切都閃爍。
我只是不正確地使用Graphics2D,或者我應該只使用BufferStrategy來合併我的雙緩衝需求?
在做任何自定義繪畫之前調用'super.paintComponent' – MadProgrammer
你的while循環有點瘋狂 – MadProgrammer
我只是作爲一個例子在這裏做了(true)。在我的實際計劃中,並非如此。 :p我會盡力。 – asdfaweglkelkr