请给这段代码添加背景图片
时间: 2024-02-28 08:54:42 浏览: 23
要给这段代码添加背景图片,可以使用JLabel组件来实现。具体步骤如下:
1. 创建一个JLabel组件来存放背景图片。
2. 设置JLabel的大小和位置,使其覆盖整个窗口。
3. 将其他组件添加到JLabel上,而不是直接添加到JFrame上。
4. 将JLabel添加到JFrame上。
以下是修改后的代码:
```java
package 实验14参考代码;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class NewYearCountdownGUI {
private static JLabel countdownLabel;
private static JTextField timeField;
private static JButton startButton;
private static JFrame frame;
private static int countdownSeconds;
public static void main(String[] args) {
new NewYearCountdownGUI();
}
NewYearCountdownGUI() {
frame = new JFrame("New Year Countdown");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
// 创建背景图片JLabel组件
JLabel background = new JLabel(new ImageIcon("background.jpg"));
background.setBounds(0, 0, 500, 500); // 设置大小和位置
frame.add(background); // 将背景图片添加到JFrame上
countdownLabel = new JLabel("");
countdownLabel.setFont(new Font("Arial", Font.BOLD, 24));
countdownLabel.setHorizontalAlignment(SwingConstants.CENTER);
timeField = new JTextField();
timeField.setHorizontalAlignment(SwingConstants.CENTER);
startButton = new JButton("Start");
startButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String timeString = timeField.getText();
int inputSeconds = Integer.parseInt(timeString);
if (inputSeconds <= 0) {
JOptionPane.showMessageDialog(frame, "Invalid countdown time!", "Error", JOptionPane.ERROR_MESSAGE);
return;
}
startCountdown(inputSeconds);
}
});
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3, 1));
panel.setOpaque(false); // 设置为透明
panel.add(new JLabel("Countdown time (in seconds):"));
panel.add(timeField);
panel.add(startButton);
// 将其他组件添加到背景图片JLabel组件上
background.add(countdownLabel, BorderLayout.CENTER);
background.add(panel, BorderLayout.SOUTH);
frame.setSize(500, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private static void startCountdown(int seconds) {
countdownSeconds = seconds;
new Thread() {// 匿名内部类对象
public void run() {
while (countdownSeconds> 0) {
countdownLabel.setText(String.valueOf(countdownSeconds));
countdownSeconds--;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
countdownLabel.setText("Happy New Year!");
};
}.start();
}
}
```
注意需要将背景图片放在项目根目录下,并将图片文件名改为"background.jpg"。同时,需要将添加其他组件的代码放在JPanel上,而不是直接添加到JFrame上。最后,需要将JPanel设置为透明,使背景图片能够显示出来。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)