Рисунок вместо фона JFrame или JPanel - Java

Узнай цену своей работы

Формулировка задачи:

Я хотел картинку вместо фона для лаунчера -_- Вот что получилось сделать без ошибок. Результат - ни намека на картинку... голый серый фон.
Листинг программы
  1. BgPanel = new JPanel(new BorderLayout());
  2. //BgPanel.setBackground(Library.lightOrange);
  3. BgPanel.add(startButton);
  4. BgPanel.add(panelStr);
  5. BgPanel.add(panelStr2);
  6. BgPanel.add(horizontalBox);
  7. try
  8. {
  9. Image im = ImageIO.read(new File("res/picto/Aurora.png"));
  10. Graphics g = im.getGraphics();
  11. g.drawImage(im, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, BgPanel);
  12. }
  13. catch (IOException e)
  14. {
  15. e.printStackTrace();
  16. }
  17. this.add(BgPanel);
Собственно, я мог бы конечно посмотреть готовые примеры, передрать из инета у умников разных, что уже все понимают, но пытаюсь понять главное - чем вообще отличаются заставка картинкой через Image и рисовка той же картинки через Graphics g? Оба стиля применяются обычно или есть другой, для частого, простого юзанья?
Я промучался весь день, так и не найдя решения. Даже взятые готовые примеры из инета у меня не работают. Повторяю вопрос:

какой шаблон у стандартного механизма импорта в фрейм рисунка извне?

Решение задачи: «Рисунок вместо фона JFrame или JPanel»

textual
Листинг программы
  1. package main;
  2.  
  3. import javax.swing.*;
  4. import java.awt.*;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7.  
  8. public class Launcher extends JPanel {
  9.  
  10.     private JButton singlePlayerButton;
  11.     private JButton multiPlayerButton;
  12.     private JButton rulesButton;
  13.     private JButton changeLanguageButton;
  14.     private JButton exitButton;
  15.  
  16.     protected JLabel logoLabel;
  17.  
  18.     protected eHandler handler;
  19.  
  20.     private Image backgroundImage;
  21.  
  22.     Launcher() {
  23.  
  24.         backgroundImage = new ImageIcon(getClass().getClassLoader().getResource("background.png")).getImage();
  25.  
  26.         setOpaque(true);
  27.         setBackground(Color.DARK_GRAY);
  28.  
  29.         Font font = MyFont.getFont();
  30.  
  31.         handler = new eHandler();
  32.  
  33.         logoLabel = new JLabel("Black Jack");
  34.         logoLabel.setFocusable(false);
  35.         logoLabel.setFont(new Font("Jokerman", Font.PLAIN, 35));
  36.  
  37.         singlePlayerButton = new JButton();
  38.         singlePlayerButton.setFont(font);
  39.         singlePlayerButton.setFocusable(false);
  40.         singlePlayerButton.addActionListener(handler);
  41.  
  42.         multiPlayerButton = new JButton();
  43.         multiPlayerButton.setFont(font);
  44.         multiPlayerButton.setFocusable(false);
  45.         multiPlayerButton.addActionListener(handler);
  46.         multiPlayerButton.setEnabled(false);
  47.  
  48.         rulesButton = new JButton();
  49.         rulesButton.setFont(font);
  50.         rulesButton.setFocusable(false);
  51.         rulesButton.addActionListener(handler);
  52.  
  53.         changeLanguageButton = new JButton();
  54.         changeLanguageButton.setFont(font);
  55.         changeLanguageButton.setFocusable(false);
  56.         changeLanguageButton.addActionListener(handler);
  57.  
  58.         exitButton = new JButton();
  59.         exitButton.setFont(font);
  60.         exitButton.setFocusable(false);
  61.         exitButton.addActionListener(handler);
  62.  
  63.         setText();
  64.  
  65.         setLayout(new GridBagLayout());
  66.  
  67.         add(logoLabel, new GridBagConstraints(0, 0, 1, 1, 1, 1,
  68.                 GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
  69.                 new Insets(200, 200, 5, 200), 0, 0));
  70.  
  71.         add(singlePlayerButton, new GridBagConstraints(0, 1, 1, 1, 1, 1,
  72.                 GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
  73.                 new Insets(5, 200, 5, 200), 0, 0));
  74.  
  75.         add(multiPlayerButton, new GridBagConstraints(0, 2, 1, 1, 1, 1,
  76.                 GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
  77.                 new Insets(5, 200, 5, 200), 0, 0));
  78.  
  79.         add(rulesButton, new GridBagConstraints(0, 3, 1, 1, 1, 1,
  80.                 GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
  81.                 new Insets(5, 200, 5, 200), 0, 0));
  82.  
  83.         add(changeLanguageButton, new GridBagConstraints(0, 4, 1, 1, 1, 1,
  84.                 GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
  85.                 new Insets(5, 200, 5, 200), 0, 0));
  86.  
  87.         add(exitButton, new GridBagConstraints(0, 5, 1, 1, 1, 1,
  88.                 GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
  89.                 new Insets(5, 200, 200, 200), 0, 0));
  90.     }
  91.  
  92.     class eHandler implements ActionListener {
  93.  
  94.         public void actionPerformed(ActionEvent e) {
  95.             if (e.getSource() == singlePlayerButton) {
  96.                 Main.changePanel(new SinglePlayer());
  97.             } else if (e.getSource() == multiPlayerButton) {
  98.                 System.out.println("Pressed multiplayer button");
  99.             } else if (e.getSource() == rulesButton) {
  100.                 System.out.println("Pressed rules button");
  101.             } else if (e.getSource() == changeLanguageButton) {
  102.                 GlobalLanguage.changeLanguage();
  103.                 setText();
  104.             } else if (e.getSource() == exitButton) {
  105.                 System.exit(0);
  106.             }
  107.         }
  108.     }
  109.  
  110.     public void paintComponent(Graphics g) {
  111.         g.drawImage(backgroundImage, 0, 0, null);
  112.     }
  113.  
  114.     public void setText() {
  115.         singlePlayerButton.setText(GlobalLanguage.getSinglePlayerButton());
  116.         multiPlayerButton.setText(GlobalLanguage.getMultiPlayerButton());
  117.         rulesButton.setText(GlobalLanguage.getRulesButton());
  118.         changeLanguageButton.setText(GlobalLanguage.getChangeLanguageButton());
  119.         exitButton.setText(GlobalLanguage.getExitButton());
  120.  
  121.         String inProgress = GlobalLanguage.getInProgressString();
  122.         multiPlayerButton.setToolTipText(inProgress);
  123.     }
  124. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут