Рисунок вместо фона JFrame или JPanel - Java
Формулировка задачи:
Я хотел картинку вместо фона для лаунчера -_-
Вот что получилось сделать без ошибок. Результат - ни намека на картинку... голый серый фон.
Листинг программы
- BgPanel = new JPanel(new BorderLayout());
- //BgPanel.setBackground(Library.lightOrange);
- BgPanel.add(startButton);
- BgPanel.add(panelStr);
- BgPanel.add(panelStr2);
- BgPanel.add(horizontalBox);
- try
- {
- Image im = ImageIO.read(new File("res/picto/Aurora.png"));
- Graphics g = im.getGraphics();
- g.drawImage(im, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, BgPanel);
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- this.add(BgPanel);
Собственно, я мог бы конечно посмотреть готовые примеры, передрать из инета у умников разных, что уже все понимают, но пытаюсь понять главное - чем вообще отличаются заставка картинкой через Image и рисовка той же картинки через Graphics g?
Оба стиля применяются обычно или есть другой, для частого, простого юзанья?
Я промучался весь день, так и не найдя решения. Даже взятые готовые примеры из инета у меня не работают.
Повторяю вопрос:
какой шаблон у стандартного механизма импорта в фрейм рисунка извне?
Решение задачи: «Рисунок вместо фона JFrame или JPanel»
textual
Листинг программы
- package main;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- public class Launcher extends JPanel {
- private JButton singlePlayerButton;
- private JButton multiPlayerButton;
- private JButton rulesButton;
- private JButton changeLanguageButton;
- private JButton exitButton;
- protected JLabel logoLabel;
- protected eHandler handler;
- private Image backgroundImage;
- Launcher() {
- backgroundImage = new ImageIcon(getClass().getClassLoader().getResource("background.png")).getImage();
- setOpaque(true);
- setBackground(Color.DARK_GRAY);
- Font font = MyFont.getFont();
- handler = new eHandler();
- logoLabel = new JLabel("Black Jack");
- logoLabel.setFocusable(false);
- logoLabel.setFont(new Font("Jokerman", Font.PLAIN, 35));
- singlePlayerButton = new JButton();
- singlePlayerButton.setFont(font);
- singlePlayerButton.setFocusable(false);
- singlePlayerButton.addActionListener(handler);
- multiPlayerButton = new JButton();
- multiPlayerButton.setFont(font);
- multiPlayerButton.setFocusable(false);
- multiPlayerButton.addActionListener(handler);
- multiPlayerButton.setEnabled(false);
- rulesButton = new JButton();
- rulesButton.setFont(font);
- rulesButton.setFocusable(false);
- rulesButton.addActionListener(handler);
- changeLanguageButton = new JButton();
- changeLanguageButton.setFont(font);
- changeLanguageButton.setFocusable(false);
- changeLanguageButton.addActionListener(handler);
- exitButton = new JButton();
- exitButton.setFont(font);
- exitButton.setFocusable(false);
- exitButton.addActionListener(handler);
- setText();
- setLayout(new GridBagLayout());
- add(logoLabel, new GridBagConstraints(0, 0, 1, 1, 1, 1,
- GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
- new Insets(200, 200, 5, 200), 0, 0));
- add(singlePlayerButton, new GridBagConstraints(0, 1, 1, 1, 1, 1,
- GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
- new Insets(5, 200, 5, 200), 0, 0));
- add(multiPlayerButton, new GridBagConstraints(0, 2, 1, 1, 1, 1,
- GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
- new Insets(5, 200, 5, 200), 0, 0));
- add(rulesButton, new GridBagConstraints(0, 3, 1, 1, 1, 1,
- GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
- new Insets(5, 200, 5, 200), 0, 0));
- add(changeLanguageButton, new GridBagConstraints(0, 4, 1, 1, 1, 1,
- GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
- new Insets(5, 200, 5, 200), 0, 0));
- add(exitButton, new GridBagConstraints(0, 5, 1, 1, 1, 1,
- GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
- new Insets(5, 200, 200, 200), 0, 0));
- }
- class eHandler implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- if (e.getSource() == singlePlayerButton) {
- Main.changePanel(new SinglePlayer());
- } else if (e.getSource() == multiPlayerButton) {
- System.out.println("Pressed multiplayer button");
- } else if (e.getSource() == rulesButton) {
- System.out.println("Pressed rules button");
- } else if (e.getSource() == changeLanguageButton) {
- GlobalLanguage.changeLanguage();
- setText();
- } else if (e.getSource() == exitButton) {
- System.exit(0);
- }
- }
- }
- public void paintComponent(Graphics g) {
- g.drawImage(backgroundImage, 0, 0, null);
- }
- public void setText() {
- singlePlayerButton.setText(GlobalLanguage.getSinglePlayerButton());
- multiPlayerButton.setText(GlobalLanguage.getMultiPlayerButton());
- rulesButton.setText(GlobalLanguage.getRulesButton());
- changeLanguageButton.setText(GlobalLanguage.getChangeLanguageButton());
- exitButton.setText(GlobalLanguage.getExitButton());
- String inProgress = GlobalLanguage.getInProgressString();
- multiPlayerButton.setToolTipText(inProgress);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д