簡體   English   中英

為什么我不能在屏幕上畫東西?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM