問題是,當我運行下面的代碼,我看到我的屏幕上的白色飛濺約100ms的可能,這是非常煩人:如何解決這個代碼中惱人的白色飛濺?
import java.awt.*;
import javax.swing.*;
public class MyPanel extends JPanel {
public MyPanel() {
this.setBackground(Color.black);
JTextArea jtext = new JTextArea(10, 20);
jtext.setBackground(Color.black);
jtext.setForeground(Color.white);
jtext.setText("some stuff here");
add(jtext);
add(new JButton("some button"));
// TODO: gui elements
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("MyPanel");
frame.getContentPane().add(new MyPanel());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
}
});
}
}
我的整個工作的設置是在黑暗的主題。用Qt編寫的等價代碼不會在同一個系統上顯示任何白色閃爍。我使用Ubuntu 12.04和Intel HD Graphics 3000,Java版本爲「1.7.0_45」。 請讓我知道如何解決這個問題。 我搜索了這個問題,但我發現的只是:「如何在java中創建啓動畫面?」這是我試圖避免的。
更新:解決方案:我不知道它爲什麼可以工作: 我將MyPanel擴展爲JFrame並將大部分功能都放在那裏。然後在run()中調用它並將其設置爲true。 這裏是代碼:
import java.awt.*;
import javax.swing.*;
public class MyPanel extends JFrame {
public MyPanel() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBackground(Color.black);
JTextArea jtext = new JTextArea(10, 20);
jtext.setBackground(Color.black);
jtext.setForeground(Color.white);
jtext.setText("some stuff here");
getContentPane().add(jtext);
// TODO: gui elements
setExtendedState(JFrame.MAXIMIZED_BOTH);
setSize(350, 250);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
MyPanel mypanel = new MyPanel();
mypanel.setVisible(true);
}
});
}
}
這裏沒有閃光 - 飛濺。 – Shiki
發佈鏈接到圖像與白色飛濺,也許它有幫助。 – alex2410