以下のプログラムを実行しようとしています。背景色PINKとStringを表示する必要があります。 "これはテストです"ホワイトjava.awt.Frame.setBackground(カラーarg0)がPINKの色を表示しない
1)Test.javaで
package Practice;
import java.awt.*;
import javax.swing.JFrame;
public class Test extends JFrame{
public static void main(String[] args){
DisplayMode dm = new DisplayMode(800,600,16,DisplayMode.REFRESH_RATE_UNKNOWN);
Test test = new Test();
test.run(dm);
}
public void run(DisplayMode dm){
setBackground(Color.PINK);
setForeground(Color.WHITE);
setFont(new Font("Arial", Font.PLAIN, 24));
Screen s = new Screen();
try{
s.setFullScreen(dm, this);
try{
Thread.sleep(5000);
}catch(Exception ex){
ex.printStackTrace();
}
}finally{
s.restoreScreen();
}
}
public void paint(Graphics g){
g.drawString("This is a test.", 200, 200);
}
}
2)Screen.java
package Practice;
import java.awt.*;
import javax.swing.JFrame;
public class Screen {
private GraphicsDevice videoCard;
public Screen(){
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
videoCard = env.getDefaultScreenDevice();
}
public void setFullScreen(DisplayMode dm, JFrame window){
window.setUndecorated(true);
window.setResizable(false);
videoCard.setFullScreenWindow(window);
if(dm != null && videoCard.isDisplayChangeSupported()){
try{
videoCard.setDisplayMode(dm);
}catch(Exception ex){
ex.printStackTrace();
}
}
}
public Window getFullScreenWindow(){
return videoCard.getFullScreenWindow();
}
public void restoreScreen(){
Window w = videoCard.getFullScreenWindow();
if(w != null){
w.dispose();
}
videoCard.setFullScreenWindow(null);
}
}
期待される結果:
フルスクリーン表示背景色PINKと文字列 "これはテストです。"ホワイト
実際の結果で:
フルスクリーン表示の背景色BLACKと文字列「これはテストです」白で
私はWindowsマシン上でEclipseでこれを実行しています。
は、フレームの背景と前景を設定しないでください。ペイントメソッドのGraphicsオブジェクトは、フレームの背景や前景を処理しません。グラフィックスオブジェクトに色を設定する必要があります( 'g.setColor(Color.PINK);)。また、** paintメソッドをオーバーライドしないでください(代わりに 'paintComponent'を使用してください)。フレームクラスでは行いません。JPanel( 'paintComponent'メソッド内)を継承するクラスでペイントして、そのパネルをフレームに追加することができます。 – Ansharja
@Ansharjaまあ、私は現在、この2つのクラスだけがあります。グラフィックスオブジェクトを設定した後(g.setColor(Color.PINK);)私は同じ問題を抱えている。 – Anand
文字列を描画する前にグラフィックスの色を設定していますか? – Ansharja