У меня есть два класса. Class GUI расширяет JFrame
и должен отображать на экране a JPanel
, который является классом Surface, который расширяет JPanel
.Попытка отображения изображения на экране в Java, не работает
Класс Поверхность имеет метод paintComponent, который должен отображать изображение, но по какой-то причине он не отображает его. Вот код:
import javax.swing.*;
public class GUI extends JFrame {
GUI(){
initUI();
}
public void initUI(){
Surface s = new Surface();
add(s);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[]args){
GUI gui = new GUI();
gui.setVisible(true);
}
}
import java.awt.*;
import javax.swing.*;
public class Surface extends JPanel {
Image image;
ImageIcon ii;
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
ii = new ImageIcon("redsquare.png");
image = ii.getImage();
Dimension d = new Dimension();
d.width = image.getWidth(null);
d.height = image.getHeight(null);
this.setPreferredSize(d);
g2d.drawImage(image,50,50,null);
}
}
Где находится файл PNG? Поместите его в корневую папку проекта. –
никогда не загружать изображение внутри paintComponent (ii = new ImageIcon («redsquare.png»);), создайте локальную переменную для этого объекта. – mKorbel
. В стороне это может быть достигнуто путем отображения изображения в 'JLabel' с 50px 'EmptyBorder'. –