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);
}
}
0
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