0

私は単に2つの円と線を描くアニメーションクラスを持っています(メインメソッドはありません)。 t show、それは私が行った円や線のいずれもウィンドウを表示しないだけです。メインメソッドをアニメーションクラスに配置すると、完全に機能します。これはどういうわけかユーザーエラーですが、何がわからないのですかまたはなぜ。

別のクラスのアニメーション メソッド。

import javax.swing.*;
import java.awt.geom.*;
import java.awt.*;
import java.awt.Graphics.*;
import javax.swing.JApplet;

public class Animation extends JApplet{

    public void init(){

}
public static void createAndShowGUI(JApplet j)
{
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.pack();
    frame.setVisible(true);
    frame.setSize(500,500);

    frame.getContentPane().add("Center", j);
}

public void paint(Graphics g){
    Graphics2D g2 = (Graphics2D) g;
    int x=50;
    int y=10;
    g2.setPaint(Color.black);

    g2.draw(new Line2D.Double(x,y,50,400));

    drawT(g2);
    drawH(g2);  
        //create a method that translates
    }

public void drawH(Graphics2D g2)
{
    int y=25;
    g2.setColor(Color.blue);
    drawCircle(y,g2);
}

public void drawT(Graphics2D g2){
    int y=100;
    g2.setColor(Color.green);
    drawCircle(y,g2);
}/*
public void raceLoop(){
    long startingTime = System.currentTimeMillis();
    long cumTime=startingTime;
    while(mve.hposition<70){
        long timePassed = System.currentTimeMillis()-cumTime;   
        cumTime += timePassed;
        //mve.update(timePassed);   
    }
}*/

public void drawCircle(int y, Graphics2D g2)
{
g2.fillOval(50,y,50,50);
}
}

主な方法

import javax.swing.*;
import java.awt.geom.*;
import java.awt.*;
import java.awt.Graphics.*;
import javax.swing.JApplet;

public class Race {

public static void main(String[] args) {
    JApplet applet = new JApplet();
    Animation animie = new Animation();
    animie.createAndShowGUI(applet);

}
}
4

2 に答える 2

1
  1. JApplet. JFrame. _ あなたは(いずれにせよ)から拡張する方が良いです(これはまたはJPanelに追加できるため)JAppletJFrame
  2. には何も追加していないJFrameため、実際、プログラムは指定したとおりに実行されています。
  3. paint最上位のコンテナーのメソッド (JAppletまたは など)をオーバーライドする必要はほとんどありませんJFrame。代わりに、そのメソッドを使用JPanelしてオーバーライドしますpaintComponent
  4. super.paintXxxアプリケーションのさまざまな側面をペイントするためにペイント メソッドがチェーンされており、このチェーンを壊すと終了します。

一読してみるのもいいかもしれません

もう少し背景について

于 2012-11-21T00:57:09.030 に答える
0

createAndShowGui(..) メソッドに間違った参照を渡しているようです。

Race クラスでこれを試してください:

import javax.swing.*;
import java.awt.geom.*;
import java.awt.*;
import java.awt.Graphics.*;
import javax.swing.JApplet;

public class Race {

    public static void main(String[] args) {
        Animation animie = new Animation();
        animie.createAndShowGUI(animie);
    }
}
于 2012-11-21T00:59:04.070 に答える