2011-06-11 7 views
2

이것은 학교와 관련없는 첫 번째 프로그램입니다. 나는 여러분이 희망적으로 쉽게 대답 할 수있는 몇 가지 질문을 가지고 있습니다. 나는 3 개의 질문이있다. 단추가 단추와 다른 클래스에도 있지만 단추를 JFrame에 추가하려면 어떻게합니까?애니메이션이 포함 된 복잡한 스윙 GUI 작성에 대한 도움

또한 내 모양을 만들고 약 10 분의 다른 사람들이 약 0.25 초 후에 서로를 그리면 어떻게 될까요?

그런 다음 어떻게 누군가가 상자를 드래그하여 미리 지정된 경로를 따르도록할까요?

읽어 주셔서 감사합니다. 여기 내 세 개의 클래스입니다 : 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

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"); 
} 
} 

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

에 오신 것을 환영합니다. 다음 번에는 코드를 수정할 때 도구 모음에서 코드 태그 (도구 모음의'{} '아이콘)를 사용하여 코드가 질문 본문에 올바르게 형식화되어 있는지 확인하십시오. – Cam

답변

1
모두 원하는 경우 JFrame의 확장 안

버튼 할 일은 다른 GUI에 추가 할 JButton을 만드는 것입니다. 대신, 아마도 그것을 만든 버튼을 반환 (getShoot라는 공개 방법) 제공 :

public JButton getShoot() { 
     return shoot; 
    } 

다음, 시간 제한 방식으로 일을하기를, 당신은 스윙 타이머를 사용해야합니다. 이 자습서는 당신에게 이것을 알려주는 방법을 알려줄 것입니다 : How to use Swing Timers

다음에는 레이아웃 관리자를 사용하는 방법에 대한 스윙 튜토리얼 섹션을 읽고 GUI에 복잡한 혼합 구성 요소를 추가하고 모두 맞출 수 있습니다 함께 잘 : Laying out Components in a Container

마지막으로,이에 관해서는 : 다음

, 어떻게 주위에 상자를 드래그 누군가에게 확장 소정 경로를 따라하도록 강제?

내가하는 일을 이해하려면이 점을 더 잘 설명해야합니다.

0

미리 지정된 경로의 경우, 포함 된 창에 비례하여 이동/크기를 지정해야합니다. 레이아웃 관리자를 사용하여 자신의 JPanel 내부에 있다고 가정하면 창은 자동으로 크기가 조정되어야하므로 창 크기를 조정하면 모양의 크기가 조정되고 올바르게 이동합니다.

관련 문제