Здравствуйте, я читал несколько руководств о том, как добавить фоновое изображение в JFrame. Однако, когда вы запускаете мою программу, фон получается только с небольшим количеством фонового изображения, отображаемого в нижней и нижней частях.Добавление фонового изображения в JFrame с использованием Swing
Вот мой текущий код:
private int width = 1280;
private int height = 720;
private String title = "Creation - " + Component.versionID + " Launcher";
private JPanel window = new JPanel();
private JFrame frame = new JFrame();
private JLabel name, version;
private JButton play, options, changelog, quit;
private Rectangle rPlay, rOptions, rChangelog, rQuit, rName, rVersion;
private int buttonWidth = 200;
private int buttonHeight = 80;
public Menu (Component component) {
frame.setTitle(title);
frame.setSize(new Dimension(width, height));
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.add(component);
frame.getContentPane().add(window);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setIconImage(new ImageIcon("res/icon.png").getImage());
setLayout(new BorderLayout());
JLabel background = new JLabel(new ImageIcon("res/background.png"));
frame.add(background);
background.setLayout(new FlowLayout());
window.setLayout(null);
drawButtons();
frame.repaint();
frame.pack();
}
private void drawButtons() {
name = new JLabel("Creation");
rName = new Rectangle((width/2) - (buttonWidth/2) + 60, 20, buttonWidth, buttonHeight);
name.setBounds(rName);
window.add(name);
play = new JButton("Play");
rPlay = new Rectangle((width/2) - (buttonWidth/2), 250, buttonWidth, buttonHeight);
play.setBounds(rPlay);
window.add(play);
options = new JButton("Options");
rOptions = new Rectangle((width/2) - (buttonWidth/2), 350, buttonWidth, buttonHeight);
options.setBounds(rOptions);
window.add(options);
changelog = new JButton("View change-log");
rChangelog = new Rectangle((width/2) - (buttonWidth/2), 450, buttonWidth, buttonHeight);
changelog.setBounds(rChangelog);
window.add(changelog);
quit = new JButton("Quit");
rQuit = new Rectangle((width/2) - (buttonWidth/2), 550, buttonWidth, buttonHeight);
quit.setBounds(rQuit);
window.add(quit);
play.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Component component = new Component();
frame.dispose();
component.start();
}
});
options.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
changelog.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
quit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
(Как вы можете видеть) мой размер JFrame является 1280x720. Это тот же размер, что и фоновое изображение, поэтому я не вижу никаких проблем. Если бы кто-нибудь мог помочь мне изменить мой код или дать мне указатели, я просто ищу фоновое изображение для отображения за кнопками.
* "размер JFrame является 1280x720. Это тот же размер, как фоновое изображение" * ... нет, он выиграл» t be. Рамка имеет декорации, это означает, что пространство, доступное для приложения, будет «рамкой» в рамке. Вместо того, чтобы напрямую устанавливать размер кадра, используйте настраиваемый компонент, который возвращает 'preferredSize' области содержимого и использует это как область содержимого фреймов ... – MadProgrammer