아래의 프로그램을 실행하려고합니다. 배경색이 PINK와 String 인 "This is a test"프로그램을 실행하려고합니다. 화이트java.awt.Frame.setBackground (Color 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 및 String "이것은 테스트입니다." 화이트
실제 결과에서 :
전체 화면 표시 배경 색상 BLACK 및 문자열 ". 이것은 테스트입니다" 화이트.
저는 Windows 시스템에서 이식을 실행하고 있습니다.
은 프레임의 배경과 전경을 설정하지 마십시오
이
내가 한 말의 일 예이다. 페인트 메서드의 Graphics 객체는 프레임 배경이나 전경을 처리하지 않습니다. 그래픽 객체에 색상을 설정해야합니다 ('g.setColor (Color.PINK);). 또한, ** 결코 ** paint 메소드를 오버라이드하지 말고 (대신에'paintComponent'를 사용하십시오.) 프레임 클래스에서는 사용하지 마십시오.JPanel ('paintComponent' 메소드에서)을 확장하는 클래스에서 모든 페인트 작업을 할 수 있고, 그 프레임을 프레임에 추가 할 수 있습니다. – Ansharja@Ansharja 음, 현재이 두 클래스 만 있습니다. 그래픽 객체를 설정 한 후 (g.setColor (Color.PINK);). 또한 나는 같은 문제가 생겼다. – Anand
문자열을 그리기 전에 그래픽 색상 *을 설정하고 있습니까? – Ansharja