一.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Example25_1
{
public static void main(String args[])
{
JButton button=new JButton("轻组件按钮");
JTextArea text=new JTextArea("轻组件",20,20);
JFrame jframe=new JFrame("根窗体");
jframe.setSize(200,300);
jframe.setBackground(Color.blue);
jframe.setVisible(true);
jframe.pack();    //这是什么方法呀,什么意思呢?书上还没有讲
jframe.addWindowListener(new WindowAdapter()
{
public void windowCloseing(WindowEvent e)
{
System.exit(0);
}
});              //这条复合语句怎么执行的呀,晕了,一点都看不懂
Container contentpane=jframe.getContentPane();
contentpane.add(button,BorderLayout.SOUTH);
contentpane.add(text,BorderLayout.CENTER);
jframe.pack();
}
}二.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Dwindow extends JFrame   //这个是不是没有执行呢?
{
JButton button1,button2;
Dwindow(String s)
{
super(s);
Container con=getContentPane();
button1=new JButton("打开");  //怎么没显示
button2=new JButton("关闭");  //也没有显示
con.add(button1);
con.add(button2);
pack();
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
class Mydialog extends JDialog
{
JButton button1,button2;
Mydialog(JFrame F,String s)
{
super(F,s);
button1=new JButton("open");
button2=new JButton("close");
setSize(90,90);
setVisible(true);
setModal(false);
Container con=getContentPane();
con.setLayout(new FlowLayout());
con.add(button1);
con.add(button2);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
public class Example25_4 extends JApplet
{
Dwindow window;
Mydialog dialog;
JButton button;
public void init()
{
window=new Dwindow("带对话框窗口");
dialog=new Mydialog(window,"我是对话框");
button=new JButton("ok");
getContentPane().add(button);
}
}

解决方案 »

  1.   

    (1)jframe.pack()就是显示时Jframe尽可能地小,小到只能摆下其中所包含的组件。(2)jframe.addWindowListener(new WindowAdapter()
    {
    public void windowCloseing(WindowEvent e)
    {
    System.exit(0);
    }
    });  
    在这里,括号里是一个内部类,用来监听事件。此处监听的事件就是当你按jframe右上角的叉号时可以关闭窗口。
    (3)第二个例子我有点不明白,怎么只定义了几个类,连main都没有啊??
      

  2.   

    第二个不是 JApplet小程序,和一般的java程序不一样,是通过浏览器来执行的。需要建立一个html才可以运行。
      

  3.   

    jframe.pack();//缩减jframe
    public void windowCloseing(WindowEvent e)
    {
    System.exit(0);
    }//监听关闭
    第二个程序不知道.我这applet程序用html不好用.机器配置问题,不会调
      

  4.   

    jframe.pack()//怎么才能算是近可能的小呢?第二个class Dwindow extends JFrame   //这个类好像没有执行呢? button1=new JButton("打开");  //怎么没显示
    button2=new JButton("关闭");  //也没有显示
      

  5.   

    jframe.pack()//怎么才能算是近可能的小呢?-----------
    比如你的jframe.setSize(800,600);
    但是上面只放了一个button,那么pack之后界面的size就只有一个button那么大,而不是原来800*600,你不是可以看到效果的吗?
      

  6.   

    jframe.pack()//怎么才能算是近可能的小呢?  就是尽可能的紧凑,节省空间。
    class Dwindow extends JFrame   //这个类好像没有执行呢?在 public class Example25_4 extends JApplet
    {
    Dwindow window;
    中有Dwindow的对像,执行了它的构造函数
      

  7.   

    button1=new JButton("打开");  //怎么没显示
    button2=new JButton("关闭");  //也没有显示
      最好加到Jframe是去。
    pack()能使布局管理器进行计算,得出一适当的框架大小,使框架以紧缩的形式包容其中的组件个人建议:最好多看一下课本或其它相关资料!
      

  8.   

    第一个我刚才把PACK()二个分别删掉了
    有与没有它没有区别呀第二个
    是构造了呀,所以要显示"开""关"呀
    dialog=new Mydialog(window,"我是对话框");//这个也构造了呀,它怎么有显示呢
      

  9.   

    把button1,button2加到frame中去就会显示了!!!把frame中的组件尺寸改为比frame小很多就会看到有与没有pack()的区别了
      

  10.   

    第一个问题上面已经解释的很清楚了
    第二个问题:
    1.Dwindow在Applet中由init()调用
    其效果和main方法差不多.
    2.button1=new JButton("打开");  //怎么没显示
    button2=new JButton("关闭");  //也没有显示
    是因为布局管理器
    所有button都重叠在一起,所以只看得到一个
    3.还有Mydialog中的 setVisible(true)应该放到
    con.add(button2);的后面
    所以看不到Dialog上面的组件