如何更正Java代码?
我编写了这个Java程序,它可以调整大小并显示位于C:/中的图像,并在显示图像的五秒钟内关闭。虽然该类编译正确,但我无法在五秒钟后关闭它(而不是隐藏它)。 代码如下:如何更正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
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教程,因为它在那里都有很好的解释。编辑:““退出部件不工作”将您的尝试(最简单、完整、可验证的示例)或(简短、自包含、正确的示例)发布为一个示例。