2016-10-22 61 views
0

我試圖做一個測試窗口上有一些文字,當我運行我的代碼時,它不繪製字符串。我爲它指定了顏色。任何人都可以幫助我嗎?drawString沒有在窗口上繪製文本

Here what it draws

import javax.swing.*; 
import java.awt.*; 

class Main 
{ 
    public static void main(String[] args) { 
     DrawFrame f = new DrawFrame(); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.setVisible(true); 
    } 
} 
class DrawFrame extends JFrame 
{ 
    public DrawFrame(){ 
     setTitle("For Aylin"); 
     setSize(1280,720); 

     DrawPanel panel = new DrawPanel(); 
     Container cp = getContentPane(); 
     cp.add(panel); 
    } 
} 

class DrawPanel extends JPanel 
{ 
    public void paintComponents(Graphics g) 
    { 
     super.paintComponents(g); 
     g.setColor(Color.darkGray); 
     g.drawString("Hi", 100, 10); 
    } 
} 

回答

3

,因爲它們是兩個完全不同的目的,你應該重寫JPanel的paintComponent方法而不是它的paintComponents方法。第一個繪製組件本身(你想要的),而第二個繪製父組件持有的子組件繪製自己。

還記得要改變超級通話,以便它匹配,並使用方法上方的@Override註釋。