import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class bu extends JFrame implements ActionListener
{
private  JFrame jf;
private  JButton jb1;
private  JButton jb2;
bu()
{
jf=new JFrame();
jb1=new JButton("jb1");
jb2=new JButton("jb2");
jf.setLayout(new FlowLayout());
jf.setLocation(512,384);
jf.setBounds(10,10,200,400);
jb1.addActionListener(this);
jb2.addActionListener(this);
add(jb1);
add(jb2);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
JButton temp;
temp=(JButton)e.getSource();
if(temp==jb1) System.out.println("jb1");
if(temp==jb2) System.out.println("jb2");
}
public static void main(String args[])
{
new bu();
}
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【sure2003】截止到2008-07-28 14:58:42的历史汇总数据(不包括此帖):
    发帖的总数量:277                      发帖的总分数:11293                    每贴平均分数:40                       
    回帖的总数量:241                      得分贴总数量:10                       回帖的得分率:4%                       
    结贴的总数量:275                      结贴的总分数:11233                    
    无满意结贴数:2                        无满意结贴分:50                       
    未结的帖子数:2                        未结的总分数:60                       
    结贴的百分比:99.28 %               结分的百分比:99.47 %                  
    无满意结贴率:0.73  %               无满意结分率:0.45  %                  
    值得尊敬
      

  2.   

    LZ既然已经继承了JFrame 
    为什么还要在构造方法中new JFrame()?
      

  3.   

    太乱了写的。
    class bu  。。
      

  4.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class bu extends JFrame implements ActionListener
    {
        private  JFrame jf;
        private  JButton jb1;
        private  JButton jb2;
        bu()
        {
            jf=new JFrame();
            jb1=new JButton("jb1");
            jb2=new JButton("jb2");
            jf.getContentPane().setLayout(new FlowLayout());
            jf.setLocation(512,384);
            jf.setBounds(10,10,200,400);
            jb1.addActionListener(this);
            jb2.addActionListener(this);
            jf.getContentPane().add(jb1);
            jf.getContentPane().add(jb2);
            setVisible(true);
        }
        public void actionPerformed(ActionEvent e)
        {
            JButton temp;
            temp=(JButton)e.getSource();
            if(temp==jb1) System.out.println("jb1");
            if(temp==jb2) System.out.println("jb2");
        }
        public static void main(String args[])
        {
            new bu();
        }
    }
      

  5.   

    class bu本身就是JFrame的子类 .你在里面设置了半天jf这个成员 package com.myapp.struts;import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;public class Main {    public static void main(String[] args) {
            new Bu();
        }
    }class Bu extends JFrame implements ActionListener {    private JButton jb1;
        private JButton jb2;    public Bu() {
            jb1 = new JButton("jb1");
            jb2 = new JButton("jb2");
            setLayout(new FlowLayout());
            setLocation(512, 384);
            setBounds(10, 10, 200, 400);        jb1.addActionListener(this);
            jb2.addActionListener(this);
            add(jb1);
            add(jb2);
            setVisible(true);
        }    public void actionPerformed(ActionEvent e) {
            JButton temp;
            temp = (JButton) e.getSource();
            if (temp == jb1) {
                System.out.println("jb1");
            }
            if (temp == jb2) {
                System.out.println("jb2");
            }
        }
    }
      

  6.   

    Do not use javax.swing.JFrame.setLayout() use javax.swing.JFrame.getContentPane().setLayout() instead。jf.getContentPane().setLayout(new FlowLayout()); 
    jf.getContentPane().add(jb1); 
    jf.getContentPane().add(jb2); 
      

  7.   

    我这样稍改下,就正确了,为何?
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class bu extends JFrame implements ActionListener
    {
        private  JFrame jf;
        private  JButton jb1;
        private  JButton jb2;
        bu()
        {
            jf=new JFrame();
            jb1=new JButton("jb1");
            jb2=new JButton("jb2");
            setLayout(new FlowLayout());  //去掉jf.
            setLocation(512,384);      //去掉jf.
            setBounds(10,10,200,400);    //去掉jf.   ???为什么不去掉就无法正确显示呢???
            jb1.addActionListener(this);
            jb2.addActionListener(this);
            add(jb1);
            add(jb2);
            setVisible(true);
        }
        public void actionPerformed(ActionEvent e)
        {
            JButton temp;
            temp=(JButton)e.getSource();
            if(temp==jb1) System.out.println("jb1");
            if(temp==jb2) System.out.println("jb2");
        }
        public static void main(String args[])
        {
            new bu();
        }
    }
      

  8.   

    你在什么环境运行的?
    我在jdk1.4,运行还是错误。
      

  9.   

    当有jf的时候,组件都添加到了jf中,而jf并没有调用setVisible方法(最后的setVisible是调用的bu类的),所以没有显示。
    当没有jf的时候,组件添加到了bu中,调用setVisible后,显示窗体。
      

  10.   

    保留原来的代码,让两个frame都显示出来就好看了.package testtest;import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;class MyFrame extends JFrame implements ActionListener {    private JFrame jf;
        private JButton jb1;
        private JButton jb2;    MyFrame() {
            jf = new JFrame();
            jf.setVisible(true);
            jf.setSize(100,200);
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            jf.setBounds(100, 100, 200, 200);
            jb1 = new JButton("jb1");
            jb2 = new JButton("jb2");
            setLayout(new FlowLayout()); 
            jb1.addActionListener(this);
            jb2.addActionListener(this);
            add(jb1);
            add(jb2);
            pack();
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
        }    public void actionPerformed(ActionEvent e) {
            JButton temp;
            temp = (JButton) e.getSource();
            if (temp == jb1) {
                System.out.println("jb1");
            }
            if (temp == jb2) {
                System.out.println("jb2");
            }
        }    public static void main(String args[]) {
            new MyFrame();
        }
    }
      

  11.   

    如前面人所说,已经继承了JFrame了...不用那么费劲了...
      

  12.   

    你现在设置的是Bu的对象,以前设置的是jf,
    因为当创建Bu的对象时,会执行初始化,你在这里没设置Bu对象的必要属性,只设置了jf的必要属性,
    所以Bu的对象无法显示出来。
      

  13.   

    直接在你的构造函数里,
    super("你想要的标题名");
    再去掉那些jf引用就可以了。最好还要定义一下初始界面的大小, setSize(300, 200);