Как установить изображение как фон для Кадра в GUI Swing Java?

Первое, что пришло на ум:

  1. компилятор может сказать, не покрыли ли Вы все возможности в своих соответствиях
  2. , можно использовать соответствие в качестве присвоения
  3. , Если у Вас есть дизъюнктное объединение, каждое соответствие может иметь различный 'тип'
12
задан UberAlex 23 September 2009 в 14:13
поделиться

4 ответа

В JPanel нет концепции «фонового изображения», поэтому нужно было бы написать свой собственный способ реализации такой функции.

Один способ. для этого необходимо переопределить метод paintComponent для рисования фонового изображения при каждом обновлении JPanel .

Например, можно создать подкласс JPanel и добавьте поле для хранения фонового изображения и переопределите метод paintComponent :

public class JPanelWithBackground extends JPanel {

  private Image backgroundImage;

  // Some code to initialize the background image.
  // Here, we use the constructor to load the image. This
  // can vary depending on the use case of the panel.
  public JPanelWithBackground(String fileName) throws IOException {
    backgroundImage = ImageIO.read(new File(fileName));
  }

  public void paintComponent(Graphics g) {
    super.paintComponent(g);

    // Draw the background image.
    g.drawImage(backgroundImage, 0, 0, this);
  }
}

(Приведенный выше код не был протестирован.)

Следующий код можно использовать для добавления JPanelWithBackground в JFrame :

JFrame f = new JFrame();
f.getContentPane().add(new JPanelWithBackground("sample.jpeg"));

В этом примере метод ImageIO.read (File) использовался для чтения внешнего файла JPEG.

21
ответ дан 2 December 2019 в 04:25
поделиться

Вы можете создать подкласс компонента

http://www.jguru.com/faq/view.jsp?EID=9691

Или возиться с оболочками

http://www.java-tips.org/java-se-tips/javax.swing/wrap-a-swing-jcomponent-in-a-background-image.html

2
ответ дан 2 December 2019 в 04:25
поделиться

Вот еще один быстрый подход без использования дополнительной панели.

JFrame f = new JFrame("stackoverflow") { 
  private Image backgroundImage = ImageIO.read(new File("background.jpg"));
  public void paint( Graphics g ) { 
    super.paint(g);
    g.drawImage(backgroundImage, 0, 0, null);
  }
};
1
ответ дан 2 December 2019 в 04:25
поделиться

Запись Панель фона показывает несколько различных способов в зависимости от ваших требований.

3
ответ дан 2 December 2019 в 04:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: