0
@Override
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
super.paintComponent(g2);
g2.fillRect(20, 20, 200, 200);
g2.drawImage(map, 0, 0, 1004, 687, null);
}
這是我的JPanel爲的paintComponent的代碼。的Java Swing不會顯示g.drawImage(),直到重繪()被調用
當應用程序啓動時,我可以看到矩形(僅在那裏,因爲我想檢查paintComponent是否被調用)。但地圖不繪製,直到我強制重畫窗口或按下強制重繪()的按鈕重繪。
我試着在幾個地方調用validate(),因爲有些答案表明,但它沒有工作。
你如何獲得'map'?你使用'ImageIO.read(...)'嗎?請注意,'validate()'不應該在這裏使用任何東西,因爲它不與重繪組件相關聯,而是與佈置其子組件(如果有的話)相關聯。 –
我將映射作爲創建JPanel對象時實例化的私有字段。所以,我有私人Image map = Toolkit.getDefaultToolkit()。getImage(「src/hw8/data/campus_map.jpg」); –
如果使用'ImageIO.read(new File(...))',會發生什麼? –