实际你的paint方法已经覆盖了JFrame的paint方法,窗体的内容就指望他画出来,你覆盖后就指望你自己的paint方法,你只使用一个drawString,所以你也只能看到一个client run了。

解决方案 »

  1.   

    对阿 楼上说的对啊  你只有一个drawString啊
      

  2.   

    //原因楼上两位已经说了
    //所以必须在paint()中加上super.paint(g);
    //先调用父类的方法import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class SwingP extends JFrame
    {
    Container c=new Container();
    JButton b=new JButton("Start");
    JLabel l=new JLabel("This is Client");
    public SwingP()
    {
    c=this.getContentPane();
    c.setLayout(new FlowLayout());
    c.add(b);
    c.add(l);
    this.addWindowListener (new WindowAdapter(){
    public void windowClosing(WindowEvent e){
    dispose();
    System.exit(0);
    }
    });
    }

    public void paint(Graphics g)
    {
    super.paint(g);//加上这一句就可以了
    g.drawString("client run",145,150);
    }
    public static void main(String args[])
    {
    System.out.println("Starting App");
    SwingP f = new SwingP();
    f.setSize(300,300);
    f.show();
    f.setLocation(400, 120);
     
    }
    }