В настоящее время я все еще изучаю Java GUI и преуменьшаю эту проблему. Я просто задаюсь вопросом, почему я не могу загрузить его где-нибудь, кроме центра, и как загрузить изображение в другом месте?Почему мое изображение не загружается на contentPane, кроме CENTER?
import java.awt.*;
import javax.swing.*;
public class GUI {
public static void main(String[] args) {
GUI gui = new GUI();
gui.go();
}
public void go() {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
Player player = new Player();
panel.setBackground(Color.darkGray);
JButton button = new JButton("shock me");
panel.add(button);
frame.getContentPane().add(BorderLayout.EAST, panel);
frame.getContentPane().add(BorderLayout.NORTH, player);
//frame.getContentPane().add(BorderLayout.CENTER, player);
frame.setSize(200,200);
frame.setVisible(true);
}
}
Вот мой плеер класса
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.util.Random;
import javax.swing.*;
public class Player extends JPanel{
public void paintComponent(Graphics g) {
Image image = new ImageIcon("Source/hero.jpg").getImage();
g.drawImage(image, 3, 4 , this);
}
}
'Image image = new ImageIcon (" Source/hero.jpg "). GetImage();' 1) Потенциально длительные операции должны быть исключены из любого метода рисования. Вместо этого объявите его как атрибут класса и загрузите изображение один раз при создании экземпляра. 2) Этот способ загрузки изображения предполагает путь «Файл», но это не будет работать для развертывания, лучше начать работу с «URL» прямо сейчас. 3) 'ImageIcon' не будет возвращать ошибки, если он не находит/не может загрузить изображение. Лучше использовать 'ImageIO', который генерирует информативное исключение, если есть проблема. –
4) 'public void paintComponent (Графика g) {..' должна быть' public void paintComponent (Graphics g) {super.paintComponent (g); ..'. Всегда сначала вызывайте метод 'super'. –
хорошо, спасибо за советы. –