我如何将图像绘制到JPanel或JFrame,我已经阅读了oracle的教程,但我似乎无法正确的.我需要将图像“BeachRoad.png”显示在一组特定的坐标上.这是我到目前为止.
- public class Level1 extends JFrame implements ActionListener {
- static JLayeredPane EverythingButPlayer;
- static Level1 l1;
- public Level1() {
- EverythingButPlayer = new JLayeredPane();
- BufferedImage img = null;
- try {
- img = ImageIO.read(new File("BeachRoad.png"));
- } catch (IOException e) {
- }
- Graphics g = img.getGraphics();
- g.drawImage(img,EverythingButPlayer);
- this.add(EverythingButPlayer);
- }
在Main()中,
- l1 = new Level1();
- l1.setTitle("poop");
- l1.setSize(1920,1080);
- l1.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
- l1.setVisible(true);
提前致谢!
解决方法
尝试这个:
- package com.sandBox;
- import javax.imageio.ImageIO;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import javax.swing.WindowConstants;
- import java.awt.Graphics;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.IOException;
- public class SwingSandBox {
- public static void main(String[] args) throws IOException {
- JFrame frame = buildFrame();
- final BufferedImage image = ImageIO.read(new File("C:\\Projects\\MavenSandBox\\src\\main\\resources\\img.jpg"));
- JPanel pane = new JPanel() {
- @Override
- protected void paintComponent(Graphics g) {
- super.paintComponent(g);
- g.drawImage(image,null);
- }
- };
- frame.add(pane);
- }
- private static JFrame buildFrame() {
- JFrame frame = new JFrame();
- frame.setDefaultCloSEOperation(WindowConstants.EXIT_ON_CLOSE);
- frame.setSize(200,200);
- frame.setVisible(true);
- return frame;
- }
- }