2016-10-22 86 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注释。