只要在p.add(b,BorderLayout.NORTH);
p.add(l,BorderLayout.SOUTH);
后加入f.setVisible(true);就可以了
否则按你的原程序显示的是一个空的fram只有在最大化一下或则切换一下界面后才能显示出来,因为显示的是super.f的句柄
别忘了给分呀!!!!!!!

解决方案 »

  1.   

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.util.*;
    class ThreadTest{
    public static void main(String[] args){
    ThreadTest test=new ThreadTest();
    JFrame f=new JFrame("thread");
    f.setSize(200,200);
    f.setVisible(true);
    f.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }
    });
    MyThread t=test.new MyThread(f);
    t.start();
    } class MyThread extends Thread{
    private JFrame f;
    MyThread(JFrame f){
    super();
    this.f=f;
    } public void run(){
    JButton b=new JButton("press");
    JLabel l=new JLabel("1");
    b.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    }
    });
    Container p=f.getContentPane();
    p.add(b,BorderLayout.NORTH);
    p.add(l,BorderLayout.SOUTH);
    f.setVisible(true);//<===========增加该行看看

    }
    }