我在很多帖子中搜索了如何添加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);
}
}
}
}
答案 0 :(得分:1)
有两种方法可以做到这一点:
paintComponent()
的{{1}}方法。
像这样:@覆盖
JPanel
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(yourImage, 0, 0, this);
}
将图片加载为JLabel
,然后将其显示在ImageIcon
中。