用JPanel代替Container 生成实例

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;class TestFrame extends JFrame implements ActionListener 
    {
      JPanel pane;
      JButton but;
      JTextField text;
      TestFrame()
    {
      super("testframe");
      pane=new Container();
      but=new Button("show");
      text=new TextField("");
      
      
      pane.add(but);
      pane.add(text);
      getRootPane().setContentPane(pane);//add(pane);
      setBounds(0,0,300,100);
      setVisible(true);
      addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
        }
      public void actionPerformed(ActionEvent e)
    {
      if(e.getSource()==but)
           text.setText("Button Pressed");   
        }
    }
    public class test1
    {
    public static void main(String args[] )
    {testframe test=new testframe();}}
      

  2.   

    testframe()
    {
      super("testframe");
      pane=new Container();  <----------这里改为pane=new Panel(),因为Container是所有组件的父类,实例化对象无意义。
      but=new Button("show");
      text=new TextField("");
      setVisible(true);   <-------这句放的太靠前了,你的组件还没加到窗口中你就让它显示,它当然里面什么东西都没有了,请将这句放到下面。
      setBounds(0,0,300,100);
      pane.add(but);
      pane.add(text);
      add(pane);
      addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
        }
      

  3.   

    setVisible(true);   放在上面没有问题的
      

  4.   

    setVisible(true);  的位置不对阿
    怎么能放得那么靠前阿!!
    还什么都没有呢
      

  5.   

    问一下container的概念以及它和实例的区别究竟是什么?
    我把所有container都换成了panel,但在运行时,编译器提示把add(pane)换成
    Frame.getConstantPanel().add(pane),为什么?
      

  6.   

    在JFrame中添加控件只能在它的内容板上加
    frame.getContentPane().add(pane)
    或者
    frame.setContentPane(pane)如果是在Frame上就可以直接加控件
      

  7.   

    再者不建议awt组件和swing组件混合着使用。
      

  8.   

    setVisible(true)你就在放所有的组件加上去之后吧放在前面当然也可以,只是最后你还得加上一句validata()setVisible(true)之后就会调用Frame的paint方法去安排显示了
      

  9.   

    多谢kypfos指点,
    痛感自己的Swing一知半解,
    能不能介绍几本比较好的swing方面的书?