日期:2014-05-20  浏览次数:20673 次

一个swing应用程序卡死问题
Java code

package ch5;

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;

public class JLayeredPaneTest extends Frame
{
    public JLayeredPaneTest()
    {
        final int x=new Integer(100);
        int y=new Integer(200);
        JLabel j=new JLabel("sadasdsadsadsadsa");
        JLabel j1=new JLabel("萨达是决定离开撒娇sadasjdsal");
        j.setBounds(20,20,100,100);
        j1.setBounds(20,20,100,100);
        JLayeredPane main=new JLayeredPane();
        JLayeredPane submain=new JLayeredPane();
        
        main.setLayout(new BorderLayout());
        JButton b1=new JButton("往上一层");
        JButton b2=new JButton("往下一层");
        JPanel jpanel=new JPanel();
        jpanel.add(b1);
        jpanel.add(b2);
        main.add(jpanel,BorderLayout.SOUTH);
        submain.add(j,x );
        submain.add(j1,y );
        main.add(submain,BorderLayout.CENTER);}
    public static void main(String[] args)
    {
        JLayeredPaneTest sa=new JLayeredPaneTest();
        sa.setBounds(100,100,500,500);
        sa.setVisible(true);

        
    }
            
}



这个程序运行的时候会直接卡死,什么都显示不出来,点×都关不了????

------解决方案--------------------
你没定义setDefaultCloseOperation(EXIT_ON_CLOSE);
------解决方案--------------------
这个很简单啊,第一 ,你的构造方法里面没有this.add(main);这句话啊,就相当于什么也没有加,家里这句话就加了main ,main又会添加submain ;第二,要实现点×关闭程序就用一个简单的内部类继承自WindowAdapter 就行 代码为: this.addWindowListener(new WindowAdapter() {//完成点×就关闭程序的功能

@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}

});

这样就能实现点×系统退出了。