JFrame add image

Guys, how to add a picture to the window correctly? When I add it, it goes off the screen.

import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class Window extends JFrame {

private int width = 300;
private int height = 300;

private Image img;

public Window() {
    setSize(width, height);
    setTitle("File Monitor:D");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setResizable(false);
    setVisible(true);

}

public void loadImage(String src) {
    img = new ImageIcon(src).getImage();
}

public void drawIcon() {
    Graphics g = getGraphics();
    g.drawImage(img, 0, 0, null);
}

}

Author: Ришат, 2015-05-20

4 answers

In your case, specify the size of the window{[2] as the size of the image to draw]}

public void drawIcon() {
    Graphics g = getGraphics();
    g.drawImage(img, 0, 0, width, height, null);
}
 1
Author: Stranger in the Q, 2016-05-23 12:11:31

Use JLabel, for example like this:

    ImageIcon icon1 = createIcon("images/settings.jpg");
    JLabel label = new JLabel(icon1);
    panel.add(label).setBounds(10,10,27,30);
 0
Author: DmitriyKhirniy, 2016-04-19 07:11:17

Please try the JavaFX option:

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;

public class Window extends Application {

    @Override
    public void start(Stage primaryStage) {
        // Загружаем изображение (указываем путь)
        Image image = new Image("image.png");
        // Загруженное изображение отображаем в контейнере.
        ImageView imageView = new ImageView(image);

        // Контейнеру прописываем расположение в контейнере верхнего уровня
        imageView.setLayoutX(0);
        imageView.setLayoutY(0);

        // Контейнером верхнего уровня будет Группа. Она же будет корнем сцены приложения.
        Group root = new Group();
        // Добавляем дочерний элемент к корню - наш контейнер отображения картинки.
        root.getChildren().add(imageView);

        // Создаём сцену. (корень, ширина окна, высота окна)
        Scene scene = new Scene(root, 300, 250);

        // Имя приложения в шапке окна.
        primaryStage.setTitle("Картинка");
        // Назначаем сцену приложению.
        primaryStage.setScene(scene);
        // Отображаем сцену.
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}
 0
Author: DimXenon, 2016-05-23 11:35:48

Create a new method:

import java.io.IOException;
import java.awt.BorderLayout;
import javax.imageio.ImageIO;
import javax.swing.JLabel;
protected void setImage(String path /* Принимает путь картинки */) {
    File f; // Создаём файл
    f = new File(path); // Устанавливаем путь для файла
    try {
        img = ImageIO.read(f); // Считываем картинку
    } catch(IOException ioe) {
        JOptionPane.showConfirmDialog(null, "Что-то неправильно!\n" + ioe.toString(), 
                "Error!", JOptionPane.PLAIN_MESSAGE);
        System.exit(0);
    }
    JLabel jl = new JLabel(new ImageIcon(img));
    JPanel jp = new JPanel();
    jp.setLayout(new BorderLayout());
    jp.add("Center", jl);

}
 0
Author: Viler Viler, 2017-06-17 10:50:56