Рисунок вместо фона 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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д