如何更正Java代码?

如何更正Java代码?,java,swing,awt,Java,Swing,Awt,我编写了这个Java程序,它可以调整大小并显示位于C:/中的图像,并在显示图像的五秒钟内关闭。虽然该类编译正确,但我无法在五秒钟后关闭它(而不是隐藏它)。 代码如下: import java.awt.*; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.e

我编写了这个Java程序,它可以调整大小并显示位于C:/中的图像,并在显示图像的五秒钟内关闭。虽然该类编译正确,但我无法在五秒钟后关闭它(而不是隐藏它)。 代码如下:

import java.awt.*;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.awt.RenderingHints;
import java.io.*;
import java.io.File;
import java.lang.*;
import java.math.*;
import java.util.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.UIManager;
public class loadscreen extends JFrame 
{
    private JMenuBar menuBar;
    private JPanel panel1;
    private static JFrame JFrame1;
    //Constructor 
    public loadscreen()
    {
        final BufferedImage img=new ImgUtils().scaleImage(750,500,"C:/default_logo_img.jpg");
        this.setTitle(" sCool ");
        this.setSize(750,500);
        //pane with null layout
        JPanel contentPane = new JPanel(new BorderLayout());
        contentPane.setPreferredSize(new Dimension(750,500));
        contentPane.setBackground(new Color(255,255,255));
        JLabel label=new JLabel(new ImageIcon((Image)img));
        //adding components to contentPane panel
        contentPane.add(label, BorderLayout.CENTER);
        //adding panel to JFrame and seting of window position and close operation
        this.add(contentPane);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        this.pack();
        this.setVisible(true);
        this.setResizable(false);
        JFrame1 = this;
    }

    public static void main()
    {
        System.setProperty("swing.defaultlaf", "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        javax.swing.SwingUtilities.invokeLater(new Runnable() 
            {
                public void run() 
                {
                    new loadscreen();
                }
            });
        loadscreen.closeCall();
    }

    public static void closeCall()
    {
        Calendar today = new GregorianCalendar();
        int time = today.get(Calendar.SECOND);
        int time2 = time + 5;
        for(int i=1; i>0; i++)
        {
            if (today.get(Calendar.SECOND) == time2)
            {
                JFrame1.dispatchEvent(new WindowEvent(JFrame1, WindowEvent.WINDOW_CLOSING));
                System.exit(0);
                break;
            }        
        }
    }
}

请帮我做这个

您为问题编写解决方案的方式对专业程序员来说有点脏,但由于您是初学者,我只需对您的代码进行一些小改动即可:-)

只有您的方法
closeCall()
需要一些调整:

public static void closeCall()
{
    Long exitTime = Calendar.getInstance().getTime().getTime() + 5 * 1000;
    for(int i=1; i>0; i++)
    {
        Long currentTime = Calendar.getInstance().getTime().getTime();
        if (currentTime >= exitTime)
        {
            JFrame1.dispatchEvent(new WindowEvent(JFrame1, WindowEvent.WINDOW_CLOSING));
            System.exit(0);
            break;
        }        
    }
}

我正在使用
Calendar.getInstance().getTime().getTime()
以毫秒为单位获取当前时间。我们需要加上5秒,所以是5*1000毫秒。在循环中,只要currentTime大于exitTime,屏幕就会关闭。

使用Swing定时器,而不是无限for循环。是否尝试调试代码?注意:它不完整。我只需要它在五秒钟内关闭(而不是隐藏)的部分。谷歌Swing Timer教程,因为它在那里都有很好的解释。编辑:““退出部件不工作”将您的尝试(最简单、完整、可验证的示例)或(简短、自包含、正确的示例)发布为一个示例。