[英]Why can't I draw something on the screen?
import javax.swing.JFrame;
import java.awt.*;
import java.awt.image.*;
class Screen extends Canvas {
public static JFrame window(int width,int height,String title) {
System.out.println("window()");
JFrame window = new JFrame(title);
window.setSize(width,height);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setResizable(false);
window.setVisible(true);
return window;
}
public static Canvas canvas(int width,int height) {
System.out.println("canvas()");
Canvas canvas = new Canvas();
canvas.setSize(width, height);
return canvas;
}
public static Graphics createGraphics(Canvas window,BufferStrategy strategy) {
System.out.println("createGraphics()");
Graphics graphics = strategy.getDrawGraphics();
return graphics;
}
public static BufferStrategy createStrategy(JFrame window) {
window.createBufferStrategy(2);
BufferStrategy strategy = window.getBufferStrategy();
return strategy;
}
public static void main(String[] args) {
JFrame window = window(800,600,"Application");
Canvas canvas = canvas(800,600);
BufferStrategy strategy = createStrategy(window);
window.add(canvas);
while(true) {
Graphics g = createGraphics(canvas,strategy);
g.fillRect(0, 0, 20, 20);
g.dispose();
strategy.show();
}
}
}
我期待在屏幕上畫一些東西,但它沒有用。 不知道Graphics和Bufferstrategy是不是一定要用在同一個地方。 檢查我的代碼,邏輯上我認為沒有問題。我的目標是在屏幕上畫一個正方形
`import javax.swing.JFrame;
import java.awt.*;
import java.awt.image.*;
import java.util.concurrent.TimeUnit;
class Screen extends Canvas {
public static JFrame window(int width,int height,String title) {
System.out.println("window()");
JFrame window = new JFrame(title);
window.setSize(width,height);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setResizable(false);
window.setVisible(true);
return window;
}
public static Canvas canvas(int width,int height) {
System.out.println("canvas()");
Canvas canvas = new Canvas();
canvas.setSize(width, height);
return canvas;
}
public static void player(Graphics graphics,int player_x,int player_y) {
graphics.fillRect(player_x,player_y , 50, 50);
}
public static void main(String[] args) {
JFrame window = window(800,600,"Application");
Canvas canvas = canvas(800,600);
int p_x = 20;
int p_y = 20;
window.add(canvas);
while(true) {
Graphics graphics = canvas.getGraphics();
// Worked
// graphics.drawanything()
}
}
}`
這奏效了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.