应该是panel没有加layout吧

解决方案 »

  1.   

    还有frame.setVisible(true);也应该放到程序结尾
    逻辑也比较清楚
      

  2.   

    to  gdsean能说具体点吗?
    最好给出代码
      

  3.   

    import javax.swing.*;
    import java.awt.*;
    public class choice
    {
    public static void main(String args[])
    {
    Frame frame;
    Panel panel;
    Choice ch;
    frame=new Frame("my frame");
                frame.setSize(300,300);
    panel=new Panel();
                       panel.setLayout(new BorderLayout());//好像是这个方法
    frame.add(panel);
    ch=new Choice();
    ch.addItem("choice 1");
    ch.addItem("choice 2");
    panel.add(ch);
      frame.setVisible(true);
    }
    }
      

  4.   

    frame.setVisible(true);
    应该放在最后一句:import java.awt.*;
    public class choice
    {
    public static void main(String args[])
    {
    Frame frame;
    Panel panel;
    Choice ch;
    frame=new Frame("my frame");
    frame.setSize(300,300);
    panel=new Panel();
    frame.add(panel);
    ch=new Choice();
    ch.addItem("choice 1");
    ch.addItem("choice 2");
    panel.add(ch);
    frame.setVisible(true);
    }
    }
      

  5.   

    其实这很好解决,因为Frame对象在缺省情况下默认的布局管理器是
    new BorderLayout(),所以生成的frame对象在add(panel)时必须用下面的形式:  frame.add("CENTER",panel);
    或    frame.add(panel,BorderLayout.CENTER);
    你试试吧,应该是可以了。
      

  6.   

    你用的是 import javax.swing.*;
    可程序中为什么用Frame而不用JFrame呢,如果用JFrame的话,应该用下面的语句:   JFrame frame=new JFrame();
           frame.getContentPane().add(panel,BorderLayout.CENTER);
    JFrame是swing组件,而Frame是原来的awt里的组件,我认为JFrame比Frame要好。