0
스윙을 처음 사용하고 이미지 배경을 내 JFrame
에 추가하려고합니다. 그러나 내 paintComponent
메서드가 작동하지 않습니다. 백그라운드에서 이미지가 그려 지도록 코드를 수정하는 방법에 대한 제안을 제게 해주시겠습니까?paintComponent 코드가 작동하지 않습니다.
코드는 다음과 같습니다 :
JFrame
의
paintComponent
재정
// all necessary imports have been added.
public class Menu extends JFrame {
private Image backgroundImage;
private JFrame frame;
public static void main(String[] args) throws IOException {
Menu window = new Menu();
window.frame.setVisible(true);
}
public Menu() throws IOException {
initialize();
}
public void initialize() throws IOException {
frame = new JFrame();
frame.setBounds(100, 100, 312, 294);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
}
public void paintComponent(Graphics g) throws IOException {
backgroundImage = ImageIO.read(new File("P:\\Profiles\\workspace\\Games\\Images\\matrix.jpg"));
g.drawImage(backgroundImage, 0, 0, null);
}
}
: 모두 함께 퍼팅
는,이 예제를 참조하십시오. 지금은 효과가있는 것 같습니다. 나중에 참조 할 수있는 이유는 내가 아직 새롭고이 실수를 다시하고 싶지 않기 때문에 왜 작동하지 않는지를 설명 할 수 있을까요? –
'JFrame'은 내용 패널로서'JPanel'을 사용합니다. 'JFrame'의 페인트 메소드를 오버 라이딩하는 용도는 없습니다. 실제로 보게되는 것은 프레임의 내용 패널입니다 (앞쪽에 있고이 프레임에 직접 페인팅하려는 모든 것을 숨 깁니다). 그래서 이것은 여러분이 그림을 사용자 정의하고 싶습니다. – Berger
* "JFrame의 paintComponent를 오버라이드하는 것은 유용하지 않습니다"* - 실제로는 불가능합니다. – MadProgrammer