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(...))',会发生什么? –