Java 自动关闭第二个Swing JFrame

Java 自动关闭第二个Swing JFrame,java,swing,jframe,Java,Swing,Jframe,我在一个文件中创建了两个类。一个是记事本,第二个是加载屏幕progressBar 但当我尝试执行它时,进度条框架仍保留在屏幕上,只有在我按下关闭按钮时才会关闭。我想自动关闭进度条,而不是在100%而不是另一帧后点击关闭按钮 public class swingNotePad extends MouseAdapter implements ActionListener,MouseListener{ JFrame f; JTextArea txt; JMenuBar mb; JMenu m1,m2,

我在一个文件中创建了两个类。一个是记事本,第二个是加载屏幕
progressBar

但当我尝试执行它时,进度条框架仍保留在屏幕上,只有在我按下关闭按钮时才会关闭。我想自动关闭进度条,而不是在100%而不是另一帧后点击关闭按钮

public class swingNotePad extends MouseAdapter implements ActionListener,MouseListener{
JFrame f;
JTextArea txt;
JMenuBar mb;
JMenu m1,m2,m3,m4,m5;
JMenuItem mi1,mi2,mi3,mi4,mi5,mi6,mi7,mi8;
JPopupMenu pm;
JSeparator js,js2;
public void MethodswingNotePad(){
     f=new JFrame("Developed by UC");
     txt=new JTextArea();
     txt.setBounds(0,0,600,570);
     js=new JSeparator();                                                              
     mb=new JMenuBar();
     m1=new JMenu("File");
     js2=new JSeparator(SwingConstants.VERTICAL);
     m2=new JMenu("Edit");
     m3=new JMenu("Format");
     m4=new JMenu("View");
     m5=new JMenu("Help");
     mi1=new JMenuItem("Cut");
     mi2=new JMenuItem("Copy");
     mi3=new JMenuItem("Paste");
     mi4=new JMenuItem("Select All");
     mi5=new JMenuItem("cut");
     mi6=new JMenuItem("copy");
     mi7=new JMenuItem("paste");
     mi8=new JMenuItem("select all");
     m2.add(mi1);
     m2.addSeparator();
     m2.add(mi2);
     m2.addSeparator();
     m2.add(mi3);
     m2.addSeparator();
     m2.add(mi4);
     mi1.addActionListener(this);
     mi2.addActionListener(this);
     mi3.addActionListener(this);
     mi4.addActionListener(this);

     pm=new JPopupMenu();
     pm.add(mi5);pm.add(mi6);pm.add(mi7);pm.add(mi8);

     mb.add(m1);

    mb.add(m2);
    mb.add(m3);
    mb.add(m4);
    mb.add(m5);
     f.add(txt);f.add(pm);   
     f.setJMenuBar(mb);
     f.setSize(600,600);
     f.setLayout(null);
     f.setVisible(true);
     f.setDefaultCloseOperation(EXIT_ON_CLOSE);
 }
public void actionPerformed(ActionEvent e){
    if(e.getSource()==mi1){
        txt.cut();
    }
    if(e.getSource()==mi2){
        txt.copy();
    }
    if(e.getSource()==mi3){
        txt.paste();
    }
    if(e.getSource()==mi4){
        txt.selectAll();
    }
}
public static void main(String...args){
swingNotePad a=new swingNotePad();     
swingProgressBar2 obj=new swingProgressBar2();
obj.iterate();
a.MethodswingNotePad();
 }

 }



class swingProgressBar2 extends JFrame{
JProgressBar pb;
JLabel l;
int i=0,n=0;
swingProgressBar2(){
    pb=new JProgressBar(0,2000);
    pb.setBounds(50,60,150,40);
    l=new JLabel("Loading...");
    l.setBounds(120,20,100,20);
    add(pb);add(l);
    pb.setStringPainted(true);
    pb.setValue(0);
    setSize(300,300);
    setLayout(null);
    setVisible(true);
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    if(i==2000){
        System.exit(0) ;   }
}
public void iterate(){
    while(i<2001){
        try{
            i+=100;
            pb.setValue(i);
            Thread.sleep(75);

        }
        catch(Exception e){
            System.out.println(e);
        }
    }   
    }
}
public类swingNotePad扩展了MouseAdapter实现了ActionListener,MouseListener{
jf框架;
JTextareaTXT;
JMenuBar-mb;
jmen m1、m2、m3、m4、m5;
军情1、军情2、军情3、军情4、军情5、军情6、军情7、军情8;
JPP菜单pm;
JSepator js,js2;
public void方法swingnotepad(){
f=新JFrame(“由UC开发”);
txt=新的JTextArea();
txt.setBounds(0,0600570);
js=新的jsepator();
mb=新的JMenuBar();
m1=新JMenu(“文件”);
js2=新的JSepator(SwingConstants.VERTICAL);
m2=新的JMenu(“编辑”);
m3=新的JMenu(“格式”);
m4=新JMenu(“视图”);
m5=新的JMenu(“帮助”);
mi1=新项目(“切割”);
mi2=新项目(“副本”);
mi3=新项目(“粘贴”);
mi4=新项目(“全选”);
mi5=新项目(“切割”);
mi6=新项目(“副本”);
mi7=新项目(“粘贴”);
mi8=新项目(“全选”);
m2.添加(mi1);
m2.addSeparator();
m2.添加(mi2);
m2.addSeparator();
m2.添加(mi3);
m2.addSeparator();
m2.添加(mi4);
mi1.addActionListener(这个);
mi2.addActionListener(这个);
mi3.addActionListener(这个);
mi4.addActionListener(这个);
pm=新的jpopmpmenu();
军情五处、军情六处、军情七处、军情八处;
mb.加上(m1);
mb.增加(m2);
mb.增加(m3);
mb.add(m4);
mb.add(m5);
f、 添加(txt);f.add(pm);
f、 setJMenuBar(mb);
f、 设置大小(600600);
f、 setLayout(空);
f、 setVisible(真);
f、 setDefaultCloseOperation(关闭时退出);
}
已执行的公共无效操作(操作事件e){
如果(如getSource()==mi1){
txt.cut();
}
如果(如getSource()==mi2){
txt.copy();
}
如果(如getSource()==mi3){
txt.paste();
}
如果(如getSource()==mi4){
txt.selectAll();
}
}
公共静态void main(字符串…参数){
swingNotePad a=新的swingNotePad();
swingProgressBar2 obj=新的swingProgressBar2();
obj.iterate();
a、 MethodswingNotePad();
}
}
类swingProgressBar2扩展了JFrame{
JProgressBar-pb;
JLabel;
int i=0,n=0;
swingProgressBar2(){
pb=新的JProgressBar(02000);
pb.立根(50,60150,40);
l=新的JLabel(“加载…”);
l、 挫折(120,20100,20);
添加(pb);添加(l);
pb.设置字符串已上漆(正确);
pb.设定值(0);
设置大小(300300);
setLayout(空);
setVisible(真);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
如果(i==2000){
System.exit(0);}
}
公共void iterate(){

而(i你不能
System.exit(0)
在构造函数中。当代码完成时,迭代甚至不会开始。尝试将代码放入你的迭代方法中。使用
dispose()
代替,因为
System.exit(0)
将退出整个应用程序

e、 g

public void iterate(){
而(i1)见2)Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等方面工作。在不同的地区使用不同的PLAF。因此,它们不利于像素完美的布局。相反,使用布局管理器,或者与布局填充和边框一起使用。3)为了更快地获得更好的帮助,请发布一个或…。4)使用逻辑一致的inden形式调整代码行和块。缩进旨在使代码流更易于遵循!5)代码错误地更新了进度条。它应该使用Swing
计时器更新进度条(或者使用当前方法,将对GUI组件的调用放到EDT上).6)另请参见包含进度条和对话框以在中显示进度条的。
public void iterate(){
 while(i<2001){
  try{
   i+=100;
   pb.setValue(i);
   Thread.sleep(75);

  }catch(Exception e){
   System.out.println(e);
  }
 }   
 dispose();
}