2017-05-15 9 views
-1

私はグラフィックスに関してはかなり経験の浅いので、私は、チュートリアルを試してみましたが、これで終わった:グラフィックはどのように更新しますか?

import java.awt.Canvas; 
import java.awt.Graphics; 

public class Ide extends Canvas implements Runnable{ 

    private static final long serialVersionUID = 6804608149790007396L; 

    public static final int WIDTH = 640, HEIGHT = WIDTH/12 * 9; 

    private boolean running = false; 

    Graphics gr; 

    public Ide(){ 
     new Window(WIDTH,HEIGHT,"Ide v0.1",this); 
    } 

    public synchronized void start(){ 
     running = true; 
     gr = this.getGraphics(); 
     gr.drawString("Hello", 100, 20); 

    } 

    public synchronized void stop(){ 
     running = false; 
    } 

    public static void main(String[] args) { 
     new Ide(); 

    } 
} 

をし、この:

import java.awt.Canvas; 
import java.awt.Dimension; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 

import javax.swing.JFrame; 

public class Window extends Canvas{ 

    private static final long serialVersionUID = -8255319694373975038L; 

    public Window(int w, int h, String title, Minecraft_Function_Ide ide){ 
     JFrame frame = new JFrame(title); 
     frame.setPreferredSize(new Dimension(w,h)); 
     frame.setMaximumSize(new Dimension(w,h)); 
     frame.setMinimumSize(new Dimension(w,h)); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setResizable(false); 
     frame.setLocationRelativeTo(null); 
     frame.add(ide); 
     frame.setVisible(true); 
     ide.start(); 
    } 

「こんにちは」正しく早くそれが、働いていましたもはやそうではありません。私はちょうど何らかのアップデートステートメントが欠けているのか、間違っているのか分かりません。

経験が豊富な人は誰でも手伝ってください。

+1

あなたのチュートリアルは間違っています。 'getGraphics'はカスタムペインティングの仕方ではありません。あなたがしようとしていることに応じて、キャンバスから拡張することはお勧めできません。 – MadProgrammer

+0

[AWTとスイングでのペイント]/http://www.oracle.com/technetwork/java/painting-140037.html)と[カスタム・ペイントの実行](https://docs.oracle.com/javase/tutorial/uiswing/painting/)を参照してください。どのように使用できるか – MadProgrammer

+0

[カスタム図の実行](https://docs.oracle.com/javase)のような1つ以上の適切なチュートリアルを使って、より適切な答えを得ることができるので、/tutorial/uiswing/painting /) – MadProgrammer

答えて

0

オブジェクトでpaint()メソッドを呼び出さないことが問題です。しかし、それはなぜあなたが最初に働くようになったのか説明しません。あなたのstart()メソッドの最後に次の行を追加すること

試してみてください。

gr.paint(); 
関連する問題