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();
}