2011-06-11 7 views
2

これは私の最初の非学校関連のプログラムです。私はあなたがうまくいけば簡単に答えることができるいくつかの質問があります。私には3つの質問があります。ボタンとは別のクラスになっていても、自分のボタンをJFrameに追加するにはどうすればいいですか?アニメーションを含む複雑なSwing GUIの作成に関するヘルプ

また、どのようにして私の形を作り、他の10人は、約1/4秒後にそれを好きなので、私はそれらの行を持っていました。

次に、ボックスをドラッグしている人に比例する所定のパスに従うようにするにはどうすればよいですか?

おかげさまで読んでくれてありがとう。ここに私の3クラスです:

gameRunner.java

import javax.swing.JFrame; 

public class gameRunner { 
public static void main(String args []){ 
    Enemy e = new Enemy(); 
    Buttons b = new Buttons(); 
    JFrame f = new JFrame(); 
    f.add(b); 
    f.add(e); 
    f.setVisible(true); 
    f.setSize(1300, 700); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setTitle("Tower Defense"); 
} 
} 

Enemy.java

import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.geom.Rectangle2D; 

import javax.swing.JButton; 
import javax.swing.JPanel; 
import javax.swing.Timer; 

public class Enemy extends JPanel implements ActionListener { 

    Timer t = new Timer(5, this); 

    double x = 0; 
    double y = 0; 
    double velX = 3; 
    double velY = .5; 

    int health = 10; 

    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     Graphics2D g2 = (Graphics2D) g; 
     Rectangle2D square = new Rectangle2D.Double(x, y, 10, 10); 
     g2.fill(square); 
     t.start(); 
    } 

    public double adjustHorizontalSpeed() { 
     y += velY; 
     return y; 
    } 

    public double adjustVerticalSpeed() { 
     x += velX; 
     return x; 
    } 

    public void actionPerformed(ActionEvent e) { 
     adjustHorizontalSpeed(); 
     adjustVerticalSpeed(); 
     repaint(); 
    } 

} 

Buttons.java

import java.awt.*; 
import java.awt.event.*; 

import javax.swing.JButton; 
import javax.swing.JFrame; 


public class Buttons extends JFrame implements ActionListener{ 

    private JButton shoot; 


public Buttons(){ 
    shoot = new JButton("Shoot!"); 
    shoot.setBounds(50,60,50,100); 
    shoot.addActionListener(this); 
} 


@Override 
public void actionPerformed(ActionEvent e) { 
    // TODO Auto-generated method stub 

} 
} 
+1

ようこそstackoverflow :)次回は、質問の本文にコードが正しく書式設定されていることを確認するために、コードタグ(ツールバーの「{}」アイコンを使用して投稿を編集してください)を必ず使用してください。 – Cam

答えて

1

すべてあなたがしたい場合は、ボタンのJFrameを拡張するべきではありませんこれを使用して、別のGUIに追加するJButtonを作成します。代わりに、おそらくそれを作成したボタンを返しgetShoot(と呼ばれるパブリックメソッド)を得:時限式のやり方で物事を行うには、次

public JButton getShoot() { 
     return shoot; 
    } 

を、あなたはスイングタイマーを使用する必要があります。 How to use Swing Timers

次に、レイアウトマネージャを使用する方法については、「Swingチュートリアル」のセクションを読んで、複雑なコンポーネントをGUIに追加し、それらをすべてフィットさせることができます。よく一緒に:Laying out Components in a Container

最後に、このためのよう:

次に、どのように私は周りにボックスをドラッグ誰かにスケール所定の経路をたどるためにそれらを強制するのでしょうか?

あなたがしようとしていることを理解するには、これをよりよく説明する必要があります。

0

所定のパスについては、移動する/サイズ自体が収容ペインに比例するはずです。レイアウトマネージャでは、自分のJPanel内にあると仮定すると、ペインは自動的に拡大縮小されるので、ウィンドウのサイズが変更されると、シェイプのサイズが変更され、適切に移動します。

関連する問題