gpt4 book ai didi

java - 帮助创建带有动画的复杂 Swing GUI

转载 作者:行者123 更新时间:2023-11-30 11:53:22 26 4
gpt4 key购买 nike

这是我的第一个与学校无关的项目。我有几个问题,希望你们能轻松回答。我有 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com