你没有调用Jorgan类的paint()方法。只需在mainFrame类中加入下面的一个成员方法即可:
public void paint(Graphics g){
    jo.paint(g);
}另外你的Jorgan类的paint()方法中,字符串所画位置不要为(0,0),应适当大些。全部代码如下:
//mainFrame.java
import javax.swing.*;
import java.awt.*;public class mainFrame extends JFrame 
{
  private JPanel dp;
  Jorgan jo = new Jorgan();
  public mainFrame()
  {
    try
    {
      jbInit();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }  }  private void jbInit() throws Exception
  {
    this.getContentPane().setLayout(new BorderLayout());
    this.setSize(new Dimension(400, 300));
    dp = new JPanel();
    this.getContentPane().add(dp, BorderLayout.CENTER);
    Jorgan jo = new Jorgan();
    jo.setBounds(40,40,40,40);
    jo.setVisible(true);
    dp.setVisible(true);
  }  public void paint(Graphics g){
   jo.paint(g);
  }
  
  public static void main(String[] args)
  {
      mainFrame mf = new mainFrame();
      mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      mf.setVisible(true);
  }  
}//Jorgan.java
import javax.swing.*;
import java.awt.Graphics;public class Jorgan extends JPanel 
{
  public Jorgan()
  {
    try
    {
      this.jbInit();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }  }  private void jbInit() throws Exception
  {
    this.setLayout(null);
  }     public void paint(Graphics g)
  {
    super.paint(g);
    g.drawString("11111",50,80);
  }
}

解决方案 »

  1.   

    1. add jo to dp.
    dp.setLayout(new BorderLayout());
    Jorgan jo = new Jorgan();
    jo.setBounds(40,40,40,40);
    dp.add(jo, BorderLayout.CENTER); 2. no need write paint() for mainFrame3. better replace paint() to paintComponent() for Jorgan. Because you are using JComponent.4. increase the height in drawString(). mainFrame's TileBar will hide your words.
      

  2.   

    为什么我用空的Layout就看不见,我想用xy标来定位。
    用BorderLayout定位显示不方便。谢谢解答。