GiF作为JFrame的背景

时间:2016-08-03 09:53:59

标签: java swing animation background

我正在制作一个数学游戏并希望使用gif作为背景。其尺寸为1100 * 800

我在很多帖子中搜索了如何添加GIF作为背景,但没有成功。有关简单方法的任何建议(如果使用其他组件-JPanel,......;您能告诉我们如何?)

到目前为止,这是我的JFrame代码:

public class Game extends JFrame implements ActionListener {
       private JButton play, endG, tutorial, login, easy, medium, hard, next, checkAnswer;
       private JTextArea answer;
       int total, goodAnswer = 0;

       public Game(String heading) {
           super(heading);
           this.setSize(1100, 800);
           this.setLayout(null);


           firstScreen();
           setResizable(false);

       }

       public void firstScreen() {
           getContentPane().removeAll();

           play = new JButton();
           play.setBounds(373, 350, 354, 80);
           play.setIcon(new ImageIcon("entrancePlayButton.png"));
           play.addActionListener(this);
           play.setOpaque(false);
           play.setContentAreaFilled(false);
           add(play);

           tutorial = new JButton("Tutorial");
           tutorial.setBounds(345, 520, 150, 50);
           tutorial.setFont(new Font("Arial", Font.PLAIN, 20));
           tutorial.addActionListener(this);
           tutorial.setOpaque(false);
           tutorial.setContentAreaFilled(false);
           add(tutorial);

           endG = new JButton("End Game");
           endG.setBounds(605, 520, 150, 50);
           endG.setFont(new Font("Arial", Font.PLAIN, 20));
           endG.addActionListener(this);
           endG.setOpaque(false);
           endG.setContentAreaFilled(false);
           add(endG);

           revalidate();
           repaint();
       }

       public void difficultyScreen() {
           getContentPane().removeAll();

           easy = new JButton("Easy");
           easy.setBounds(450, 310, 200, 80);
           easy.setFont(new Font("Arial", Font.PLAIN, 30));
           easy.addActionListener(this);
           easy.setOpaque(false);
           easy.setContentAreaFilled(false);
           add(easy);

           medium = new JButton("Medium");
           medium.setBounds(450, 440, 200, 80);
           medium.setFont(new Font("Arial", Font.PLAIN, 30));
           medium.addActionListener(this);
           medium.setOpaque(false);
           medium.setContentAreaFilled(false);
           add(medium);

           hard = new JButton("Hard");
           hard.setBounds(450, 570, 200, 80);
           hard.setFont(new Font("Arial", Font.PLAIN, 30));
           hard.addActionListener(this);
           hard.setOpaque(false);
           hard.setContentAreaFilled(false);
           add(hard);

           endG = new JButton("Exit");
           endG.setBounds(1000, 700, 60, 30);
           endG.setFont(new Font("Arial", Font.PLAIN, 15));
           endG.addActionListener(this);
           endG.setOpaque(false);
           endG.setContentAreaFilled(false);
           add(endG);

           revalidate();
           repaint();
       }

       public void playGameScreen() {
           getContentPane().removeAll();



           revalidate();
           repaint();
       }

       public void tutorialScreen() {
           getContentPane().removeAll();



           revalidate();
           repaint();
       }

       private static double stringToDouble(String number) {
           double num = Double.parseDouble(number);
           return num;
       }

       public static void main() {
           Game areaGame = new Game("Area Game");
           areaGame.setVisible(true);
       }

       public void actionPerformed(ActionEvent actionEvent) {
           if (actionEvent.getSource() == play) {
               difficultyScreen();
           }

           if (actionEvent.getSource() == tutorial) {
               tutorialScreen();
           }

           if (actionEvent.getSource() == endG) {
               int reply = JOptionPane.showConfirmDialog(null, "You are about to exit the game, are you sure?", "Exit game", JOptionPane.YES_NO_OPTION);
               if (reply == JOptionPane.YES_OPTION) {
                   System.exit(0);
               }

           }

       }


   }

1 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点:

  • 您可以覆盖paintComponent()的{​​{1}}方法。 像这样:

@覆盖

JPanel
  • 或者您可以使用protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(yourImage, 0, 0, this); } 将图片加载为JLabel,然后将其显示在ImageIcon中。