Java 如何制作dateTime函数并使用每个JFrame?

Java 如何制作dateTime函数并使用每个JFrame?,java,swing,awt,Java,Swing,Awt,我已经为日期时间编写了这个函数。现在我想在每个JFrame中使用。 我想在main(First.java)中为日期时间声明一个函数(方法),我想在另外几个JFrame中调用该方法(如JFrame1.java、Jframe2.java……) 我有两个JFrame(Jframe1.java和JFrame2.java) 我想用Jlabel在这两个JFrame中显示日期时间 您创建的类与GUI无关,不能在JFrame中使用。所以你需要做一些类似的事情: 创建一个“DateTimePanel”,其中包含

我已经为日期时间编写了这个函数。现在我想在每个JFrame中使用。 我想在main(First.java)中为日期时间声明一个函数(方法),我想在另外几个JFrame中调用该方法(如JFrame1.java、Jframe2.java……)


我有两个JFrame(Jframe1.java和JFrame2.java)
我想用Jlabel在这两个JFrame中显示日期时间

您创建的类与GUI无关,不能在JFrame中使用。所以你需要做一些类似的事情:

  • 创建一个“DateTimePanel”,其中包含两个标签,一个用于显示日期,另一个用于显示时间。您可以使用标签的
    setText(…)
    方法来设置要显示的字符串,而不是使用System.out.println(…)

  • 然后,您可以创建DateTimePanel的实例,并根据需要将其添加到GUI中

  • 当然,当前时间将不断变化,因此您可能需要更新时间。在这种情况下,您将使用Swing计时器持续更新标签。下面是一个使用面板和计时器的简单示例:

    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.Timer;
    
    public class TimerTime extends JPanel implements ActionListener
    {
        private JLabel timeLabel;
    
        public TimerTime()
        {
            timeLabel = new JLabel( new Date().toString() );
            add( timeLabel );
    
            Timer timer = new Timer(1000, this);
            timer.setInitialDelay(1);
            timer.start();
        }
    
        @Override
        public void actionPerformed(ActionEvent e)
        {
            //System.out.println(e.getSource());
            timeLabel.setText( new Date().toString() );
        }
    
        private static void createAndShowUI()
        {
            JFrame frame = new JFrame("TimerTime");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add( new TimerTime() );
            frame.setLocationByPlatform( true );
            frame.pack();
            frame.setVisible( true );
        }
    
        public static void main(String[] args)
        {
            EventQueue.invokeLater(new Runnable()
            {
                public void run()
                {
                    createAndShowUI();
                }
            });
        }
    }
    

    我建议您也从阅读开始,了解创建GUI的基础知识。

    “现在我想在每个JFrame中使用。”请参阅(非常糟糕的做法)是的。但是请试着理解我的问题。我想在main(First.java)中声明日期时间的函数(方法),并在另外几个JFrame中调用该方法(如JFrame1.java、Jframe2.java……)
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.Timer;
    
    public class TimerTime extends JPanel implements ActionListener
    {
        private JLabel timeLabel;
    
        public TimerTime()
        {
            timeLabel = new JLabel( new Date().toString() );
            add( timeLabel );
    
            Timer timer = new Timer(1000, this);
            timer.setInitialDelay(1);
            timer.start();
        }
    
        @Override
        public void actionPerformed(ActionEvent e)
        {
            //System.out.println(e.getSource());
            timeLabel.setText( new Date().toString() );
        }
    
        private static void createAndShowUI()
        {
            JFrame frame = new JFrame("TimerTime");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add( new TimerTime() );
            frame.setLocationByPlatform( true );
            frame.pack();
            frame.setVisible( true );
        }
    
        public static void main(String[] args)
        {
            EventQueue.invokeLater(new Runnable()
            {
                public void run()
                {
                    createAndShowUI();
                }
            });
        }
    }