小编use*_*304的帖子

如何在不退出应用程序的情况下根据JPanel上的事件关闭特定的JFrame?

如何在不退出整个应用程序的情况下基于该特定帧内的JPanel上的模拟退出特定帧?

在我的主类中,我有一个Frame()方法

public void FightFrame(String offensemsg){      

    JFrame frame = new JFrame("BattleView: ");
    frame.setLayout(new BorderLayout());
    FightScene sc = new FightScene();       
    frame.add(sc);
    frame.setVisible(true);
    frame.setSize(652, 480);
    frame.setLocationRelativeTo(null);
    frame.setResizable(false);
    sc.GenerateScene(offensemsg);
}
Run Code Online (Sandbox Code Playgroud)

在我的FightScene类中,我正在绘制一个fightscene,该类也有checkCollision()方法

      public void checkCollisions() {
           for (int i = 0; i < defense.size(); i++) {
                FriendlyEntity m = (FriendlyEntity) defense.get(i);    
                Rectangle r1 = m.getBounds();    
                for (int j = 0; j<offense.size(); j++) {
                    Enemy a = (Enemy) offense.get(j);
                    Rectangle r2 = a.getBounds();    
                    if (r1.intersects(r2)) {
                        m.setHealth(-1);
                        a.setHealth(-1);
                        if(a.getHealth()==0){
                        a.setVisible(false);
                        } else if(m.getHealth()==0){
                            m.setVisible(false);
                            } …
Run Code Online (Sandbox Code Playgroud)

java swing multiple-instances jpanel jframe

3
推荐指数
1
解决办法
7840
查看次数

根据玩家X,Y切换jpanels?

我有以下代码...(加上一个通用的Player类,包含getX,getY,setX,setY,render(),tick()等等)

我希望玩家在ViewB中加载并且当它到达边缘时...我希望ViewB关闭并被ViewA或ViewC取代(取决于它是左边缘还是右边缘)...我不能似乎完成了这个,我不知道我做错了什么.... Player类是在MainGameThread.java中创建的......然后传递给新的JPanel,这样我仍在使用原始的Player对象/ sprite被创造了......当
System.out.println("Should change screens here to ViewA");命令碰到边缘时,命令似乎没有触发..我在这里做错了什么???? 我需要修什么课?

MainGameThread类:

import java.util.LinkedList;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainGameThread extends JFrame {

    private LinkedList<JPanel> screens = new LinkedList<JPanel>();
    private ViewA va;
    private ViewB vb;
    private ViewC vc;
    private ViewD vd;
    private Player player;

    public MainGameThread() {
        player = new Player();
        // load player settings from server
        //  ..
        //
        //  va = new ViewA(player);
        //vc = new ViewC(player);
        //vd = new ViewD(Player)

        vb = new ViewB(player);

        screens.add(0,ViewB); …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel jframe

2
推荐指数
1
解决办法
63
查看次数

标签 统计

java ×2

jframe ×2

jpanel ×2

swing ×2

multiple-instances ×1