0

我想给另一个班级打电话。我有 2 个类都在扩展 JPanels,我希望一个消失,另一个出现。

我看过其他问题,但没有一个真正适用于我的情况。

我的 menuScreen 类:

package screens;

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

import javax.swing.*;
public class menuScreen extends JPanel implements MouseListener{
  private static final long serialVersionUID = 1L;

  //-------------VARIABLES---------------//
  Image wallpaper = (Image)Toolkit.getDefaultToolkit().getImage(getClass().getResource("images/wallpaper.jpg"));
  Image title_text = (Image)Toolkit.getDefaultToolkit().getImage(getClass().getResource("images/title-text.png"));
  ImageIcon startGameimg = new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getResource("images/startGame.png")));
  ImageIcon optionsimg = new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getResource("images/options.png")));
  //JButton start = new JButton(basketball);
  JLabel options = new JLabel(optionsimg);
  JLabel startGame =  new JLabel(startGameimg);
  gameScreen gS = new gameScreen();

  //-------------PAINT FUNCTION----------//
  public void paintComponent(Graphics g){
    g.drawImage(wallpaper,0,0,this);
    g.drawImage(title_text,0,0,this);
    //g.drawImage(basketball1,110,180,this);
  }

  //-------------CONSTRUCTOR-------------//
  public menuScreen(){
    this.setLayout(null);
    this.add(options);
    this.add(startGame);
    startGame.setBounds(110,180,110,110);
    options.setBounds(110,300,110,110);
    startGame.addMouseListener(this);
    options.addMouseListener(this);
  }


  public void mouseClicked(MouseEvent e) {
    if(e.getSource() ==  (startGame)){
        setVisible(false);
    }
    if(e.getSource() == (options)){
        setVisible(false);
    }
  }

  public void mousePressed(MouseEvent e) { }
  public void mouseReleased(MouseEvent e) { }
  public void mouseEntered(MouseEvent e) { }
  public void mouseExited(MouseEvent e) { }
} //END OF CLASS startingScreen 

我想出现的 gameScreen 类:

package screens;

import javax.swing.*;

public class gameScreen extends JPanel{
  private static final long serialVersionUID = 1L;
}

在 gameScreen 类中,我还没有放任何东西,因为我不知道如何调用它。

4

1 回答 1

0

基本上,您希望的行为是多余的并且没有帮助,因为它们继承了相同的类型并实现了相同的目的。很简单,不。您不能替换这样的类,您可以做的是将调用类中的引用/实例化更改为新的游戏屏幕类实例,否则从菜单屏幕类中重新绘制以保存您希望游戏类应该保存的状态值。

于 2012-09-05T23:20:53.560 回答