자습서에서 배경을 변경하려고 할 때 배경을 녹색으로 변경하려고했지만 전체 화면이 검은 색으로 유지되고 코드가 잘못되었습니다. ?색이 바뀌지 않는 배경 화면
Screen.java
package debels;
import java.awt.*;
import javax.swing.JFrame;
public class Screen {
private GraphicsDevice vc;
public Screen(){
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
vc = env.getDefaultScreenDevice();
}
public void setFullScreen(DisplayMode dm, JFrame window){
window.setUndecorated(true);
window.setResizable(false);
vc.setFullScreenWindow(window);
if (dm != null && vc.isDisplayChangeSupported()){
try{
vc.setDisplayMode(dm);
}catch (Exception e){}
}
}
public Window getFullScreen(){
return vc.getFullScreenWindow();
}
public void restoreScreen(){
Window w = vc.getFullScreenWindow();
if (w != null){
w.dispose();
}
vc.setFullScreenWindow(null);
}
}
Main.java
package debels;
import java.awt.*;
import javax.swing.*;
public class Main extends JFrame{
private static final long serialVersionUID = -7498470134154894036L;
public static void main(String[] args){
DisplayMode dm = new DisplayMode(800, 600, 16, DisplayMode.REFRESH_RATE_UNKNOWN);
Main m = new Main();
m.run(dm);
}
public void run(DisplayMode dm){
setBackground(Color.GREEN);
setForeground(Color.BLUE);
setFont(new Font("Arial", Font.PLAIN, 24));
Screen s = new Screen();
try{
s.setFullScreen(dm, this);
try{
Thread.sleep(5000);
}catch(Exception e){}
}finally{
s.restoreScreen();
}
}
public void paint(Graphics g){
g.drawString("Hello", 200, 200);
}
}
나는 'Thread.sleep'이 당신에게 어떤 호의를 베풀고 있다고 생각하지 않으며'paint' 메소드도 아니다. – MadProgrammer
The Thread.sleep는 전체 화면을 보려고하는 것일 뿐이므로 예상대로 작동하기 때문에 페인트 방법이 충돌하는 것 같지 않음 – Debels
* "페인트 방법이 예상대로 작동하기 때문에 충돌하지 않는 것 같습니다."* - 그게 문제입니다. , 그것으로 작동하지 않습니다, 자세한 내용은 내 대답을 참조하십시오;) – MadProgrammer