import javax.swing.*;
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createMainWindow();
}
});
}
private static void createMainWindow() {
JFrame mainFrame = new JFrame("Flicker Teste");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.add(new MainPanel());
mainFrame.pack();
mainFrame.setSize(400, 400);
mainFrame.setVisible(true);
}
}
Main.java
import javax.swing.*;
import java.awt.*;
public class MainPanel extends JPanel {
public MainPanel() {
setBorder(BorderFactory.createLineBorder(Color.red)); //If I comment this line the diagonal is streteched on the border.
setBackground(Color.green);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(0, 0, 5000, 5000);
}
}
MainPanel.java
これら 2 つのファイルは、リサイズ フリッカー バグを再現するためのコードです。高速でサイズ変更を行うと、境界線が繰り返され、ひどいちらつきが発生します。また、境界線がない場合は、ウィンドウの端に接する対角線の最後のピクセルが繰り返されます。まるで「空白の境界線」が端のピクセルの繰り返しで構成されているかのようです。
この恐ろしいちらつきを止める方法を知っている人はいますか? すでに解決策を探しましたが、誰も見つかりませんでした。