这是我的第一个与学校无关的项目。我有几个问题,希望你们能轻松回答。我有 3 个问题。如何将我的按钮添加到我的 JFrame,即使它与按钮属于不同的类?
此外,我将如何制作我的形状和其他十个喜欢它的形状,彼此相隔大约四分之一秒,所以我有一行。
那么,我将如何强制他们遵循预先确定的路径,该路径可以扩展到有人拖着箱子来回移动?
非常感谢大家阅读并帮助我。这是我的三个类(class):
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");
}
}
敌人.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();
}
}
按钮.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
}
}
最佳答案
如果您只想使用 JFrame 创建一个您希望添加到另一个 GUI 的 JButton,则按钮不应该扩展 JFrame。相反,也许给它一个名为 getShoot() 的公共(public)方法,该方法返回创建的按钮:
public JButton getShoot() {
return shoot;
}
接下来,要以定时的方式做事,您应该使用 Swing Timer。教程将告诉您如何执行此操作:How to use Swing Timers
接下来,您需要阅读有关如何使用布局管理器的 Swing 教程部分,以便您可以将复杂的组件组合添加到 GUI 并让它们很好地组合在一起:Laying out Components in a Container
最后,至于这个:
Then, how would I force them to follow a predetermined path that scales to somebody dragging the box around?
你必须更好地描述这一点,以便我理解你想要做什么。
关于java - 帮助创建带有动画的复杂 Swing GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6318915/