Java 操作侦听器-从其他文件连接

Java 操作侦听器-从其他文件连接,java,awt,actionlistener,Java,Awt,Actionlistener,我不知道如何让ActionListener使用AlarmCalc并显示警报何时会熄灭的结果。我还正在删除询问时间的作业窗格编码并显示报警时间 提前感谢您的帮助 MainP3 import java.net.MalformedURLException; import javax.swing.JFrame; public class MainP3 { public static void main(String[] args) throws MalformedURLException { Al

我不知道如何让
ActionListener
使用
AlarmCalc
并显示警报何时会熄灭的结果。我还正在删除询问时间的
作业窗格
编码并显示
报警
时间

提前感谢您的帮助

MainP3

import java.net.MalformedURLException;
import javax.swing.JFrame;

public class MainP3
{
public static void main(String[] args) throws MalformedURLException
{
  AlarmFrame frame = new AlarmFrame();
  frame.pack();
  frame.setTitle("Alarm Clock");
  frame.setSize(400, 250);
  frame.setLocationRelativeTo(null);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setVisible(true);

new AlarmCalc();
}
}
AlarmCalc

import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;

public class AlarmCalc {


public AlarmCalc()
{

    // Current computer time
      Date dNow = new Date( );

      // Creating format
      SimpleDateFormat ft = new SimpleDateFormat ("MM/dd/yyyy HH:mm");

      String userTime;

      // Asking user for the date and time
      userTime = JOptionPane.showInputDialog(null, "Please enter a date, time in military time:\n Example: 10/08/2013 12:00");
      SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm");

      // Computing the computer time and user time to see when the alarm will end
      Date Current = null;
      Date User = null;

        try 
            {
            Current = dNow;
            User = format.parse(userTime);

                // Computing the time difference
                long diffTime = User.getTime() - Current.getTime();
                long diffSeconds = diffTime / 1000 % 60;
                long diffMinutes = diffTime / (60 * 1000) % 60;
                long diffHours = diffTime / (60 * 60 * 1000) % 24;
                long diffDays = diffTime / (24 * 60 * 60 * 1000);

                // Reporting when the alarm will hit
                JOptionPane.showMessageDialog(null,diffDays + " days, " + diffHours + " hours, " + diffMinutes 
                        + " minutes, " + diffSeconds + " seconds" );
            } 
            catch (Exception e)
                {
                    e.printStackTrace();
                }
}
}
报警框

import java.awt.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class AlarmFrame extends JFrame
  {

    private JTextField jtfAlarmClock = new JTextField();
    private JButton jbtSetAlarm = new JButton("Set Alarm");

    public AlarmFrame ()
    {

    JPanel p1 = new JPanel(new GridLayout(1, 1));
    //p1.add(new JLabel("Enter Time: "));
    p1.add(jtfAlarmClock);
    p1.setBorder(new TitledBorder("Enter a Time: "));

    JPanel p2 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
    p2.add(jbtSetAlarm);

    add(p1, BorderLayout.CENTER);
    add(p2, BorderLayout.SOUTH);

    jbtSetAlarm.addActionListener(new ButtonListener());
    }

    private class ButtonListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e){
            Double.parseDouble(jtfAlarmClock.getText());
        }
    }
}

根据你的例子,你有三个基本的选择

  • 将AlarmCalc类的代码复制到AlarmFrame
  • 您可以调用AlarmCalc,但这不允许您从框架向类传递所需的信息
  • 您编写了一个新方法,该方法允许您将时间值从主UI传递给它,并进行所需的计算并返回结果,以便它可以显示在UI上

  • 我只需要显示还有多少时间(就像它已经在JOptionPane中一样。我不想重做已经完成的工作,因为这项作业中没有要求重做,或者要求使用JodaTime。好吧,那么,将代码从一个类移动到另一个类有什么困难呢?计算到日期/时间之间的差异的问题是,一天不完全是24小时,也不是24小时。)它是否考虑了日光节约之类的事情,但这是你必须做出的选择