2014-05-19 155 views
0

我对Java相当陌生,正在研究在JPanel中使用图形的小程序。单击按钮时不显示图像

在一个类中,我实现了actionListener来单击按钮时执行一个动作。

public void actionPerformed (ActionEvent e) 
{ 
    JButton source = (JButton) e.getSource(); 

    if (source == popDensityButton) 
    { 
     GraphicsDisplay.population(); 
    } 

在其延伸JPanel中GraphicsDisplay类,代码如下:

public void paint (Graphics g) 
{ 

    g.drawImage (world_map, 5, 40, this); 
    update (g); 

} 

public void update (Graphics g) 
{ 
    if (population == true) 
    { 
     g.drawString ("STRING", 100, 100); // used to see if the button works 

    } 
} 

public static void population() 
{ 
    population = true; 
} 

当popDensityButton被点击时,什么也没有发生。 “STRING”仅在窗口大小调整时显示。

解决此问题的最佳方法是什么? 我有一种感觉,它与调用repaint()方法有关,因为面板在调整窗口大小时会自动重新绘制。

回答

0

update(Graphics g)paint(Graphics g)这样的方法只在必要时调用以节省计算时间。所以是的,在GraphicsDisplay.population()之后,您必须拨打repaint()才能看到新的结果。

+0

我试着在GraphicsDisplay.population()之后添加repaint()。没有改变:“STRING”仅在窗口被调整大小时显示。还有什么需要添加的?是否需要在GraphicsDisplay类中使用repaint()? – user3652801

+0

就我所见,字符串应该显示在'source'中。如果是这样,那么你必须编写'source.repaint()'。 –