java - 如何将 JTable 顶行中的条目与匹配值进行比较?
问题描述
我正在尝试创建一个应用程序,其中用户将时间和日期输入到 aJTable
中,然后在那时收到警报。我计划的方式是条目按时间顺序显示,最接近的在顶行,然后每 5 分钟与用户的日期/时间进行比较,直到它们匹配。
我觉得我可以弄清楚这个计划中的所有内容,除了实际扫描仅顶行和 3 列中的 2 列(列 DATE 和 TIME,但不是 NAME)。如果有人对如何完成这项工作有任何建议,或者如果我应该改变我处理这个问题的方式,我将不胜感激,谢谢。
解决方案
我希望下面的例子能回答你的问题。
(这里我假设表格按日期和时间排序,最早的警报位于表格顶部。)
import javax.swing.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.TimerTask;
import java.util.Timer;
public class DateTimeTable
{
public static void main(String[] args)
{
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable table = new JTable(
new String[][] {
{"Water plants", "2019.01.12", "09:21"},
{"Read Java book", "2019.01.12", "19:30"},
{"Go to bed", "2019.01.12", "22:30"}},
new String[] {"Name", "Date", "Time"});
TimerTask task = new TimerTask()
{
@Override
public void run()
{
String date = table.getValueAt(0, 1).toString();
String time = table.getValueAt(0, 2).toString();
LocalDateTime alertTime = LocalDateTime.parse(date + " " + time,
DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm"));
if (alertTime.isBefore(LocalDateTime.now()))
{
JOptionPane.showMessageDialog(f, table.getValueAt(0, 0));
}
else
{
System.out.println("No alerts");
}
}
};
Timer timer = new Timer();
timer.schedule(task, 1000, 5 * 60 * 1000);
f.getContentPane().add(new JScrollPane(table));
f.setBounds(300, 200, 400, 300);
f.setVisible(true);
}
}
推荐阅读
- python - 使用 cx_freeze 时如何加载泡菜模型?
- python - 如何访问类变量中的类属性?
- android - 在 Flutter 中使用按钮访问路由时出错
- java - 为多个实体配置 ReplyingKafkaTemplate
- python - 如果我的 8 核 CPU 支持 16 个线程,对于池中的进程数,16 会比 8 更好吗?
- amazon-web-services - 在 api gateway 中创建一个 api 来调用一个 lambda 函数
- node.js - 在 mongodb 数据库中保存新帖子时发生错误
- html - 我在“摘要”标签中有一个“标签”标签。单击标签时不会打开详细信息。怎么解决?
- java - 每次用户登录网站时如何生成会话ID?
- python - 在python上卡住映射位置热图