java 程序无法关闭窗口!用dispose()无效

来源:百度知道 编辑:UC知道 时间:2024/05/12 04:49:55
package QQ;

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.xml.ws.Dispatch;

public class Progress_bar extends JFrame implements ActionListener
{
private static final long serialVersionUID = -2543187469376323631L;
//ActionListener ,ChangeListener是 2个实现进度条的 接口
private JPanel panel;
private Timer timer;
private JButton btn;
private JProgressBar pgb;
private JLabel label;
public void init()
{
panel = new JPanel();
btn = new JButton("start");
btn.addActionListener(this);
panel.add (btn,BorderLayout.CENTER);

timer = new Timer(1,this);//控制进度条速度

pgb = new JProgressBar();//可视化

一楼的应该是有效的。但没有解决本质问题。
问题出在你的GUI程序架构上。你的程序主类已经是JFrame子类了,那么它的实例就是一个JFrame,为什么还要再new一个JFrame作为程序界面呢?在main函数中,new你的主类,就是new了Frame,直接用主类此实例做程序界面即可!
所以,init中的代码应该是这样:
//JFrame frame = new JFrame("test");这行不要了
add (panel,BorderLayout.SOUTH);
add (pgb,BorderLayout.CENTER);
add (label,BorderLayout.NORTH);
setBounds(450, 300, 350, 100);//设置窗体长和宽
setVisible (true);//显示窗体
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);//关闭有效
轻松搞定!

改成这样,你看看:

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.xml.ws.Dispatch;

public class Progress_bar extends JFrame implements ActionListener
{
private static final long serialVersionUID = -2543187469376323631L;
//A