尝试每 x 秒执行一次文件

2023-12-03

请查找每 10 秒重复一次的更新代码。然而问题是它每 10 秒在屏幕上创建一个新的 GUI,而不是每 10 秒只更新数据。请你给个建议

package learningfromscrach;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import javax.swing.JTextArea;
import com.sun.java.swing.*; 
import javax.swing.table.*;
import java.awt.FlowLayout;
import java.text.DecimalFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import org.apache.log4j.BasicConfigurator;
import static org.quartz.DateBuilder.evenMinuteDate;
import org.quartz.Job;
import static org.quartz.JobBuilder.newJob;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import static org.quartz.TriggerBuilder.newTrigger;
import org.quartz.impl.StdSchedulerFactory;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.awt.Toolkit;


public class Learningfromscrach extends JFrame implements Job {

    Toolkit toolkit;
    Timer timer;

//declare all the parts that make up the GUI    
private JLabel textJLabel;
private JPanel PanelJlabel;//JLabel is actually a parameter in JAVA
private TitledBorder PanelJborder;



DefaultTableModel model;
JTable table;


public Learningfromscrach(int seconds) 
   //tell java to initiate the create interface
        //this is what is passed to the timer every 10 seconds
   {

    createUserInterface();//create method private void createUserInterface//aframe is parameter this has to match the private void
    }

class Learningtask extends TimerTask {
public void run() {
System.out.format("Timer Task Finished..!%n");
//System.exit(0); // Terminate the timer thread
}
}

private void createUserInterface()

 //all the parts to create the userinterface      
{//from here
        Container contentPane = getContentPane();
        contentPane.setLayout( null);// i am responsible for setting positioning and size of components
        setTitle("Cashout Prices");//setTitle is also a JAVA Parameter


        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setSize((int) (screenSize.width/6), (int) (screenSize.height/1.1));//cast int for width
        setVisible(true);    //makes the java application show



       System.out.format("Timer task started at:"+new Date());   
         String url = "http://bmreports.com/bsp/additional/soapfunctions.php?element=SYSPRICE&dT=NRT";
  Document doc = null;
    try {
        doc = Jsoup.connect(url).get();
    } catch (IOException ex) {
        Logger.getLogger(Learningfromscrach.class.getName()).log(Level.SEVERE, null, ex);
    }
  Elements Periodparagraphs;      
  Elements SSPparagraphs;
  Elements SBPparagraphs; 

  Periodparagraphs = doc.select("SP");//counts the number of SSP Paragraphs in the entire document
  SSPparagraphs = doc.select("SSP");//counts the number of SSP Paragraphs in the entire document
  SBPparagraphs = doc.select("SBP");//counts the number of SBP Paragraphs in the entire document

  //DecimalFormat df = new DecimalFormat("#.###");
//df.format(0.912385);


  String[] numbers1;
    numbers1 = Periodparagraphs.text().split(" ");



    String[] numbers;
    numbers = SSPparagraphs.text().split(" ");

    String[] numbers0;
    numbers0 = SBPparagraphs.text().split(" ");

    //String str = "1234";
//int num = Integer.parseInt(str);

    int tableRows;

    if (numbers0.length > numbers.length && numbers0.length > numbers1.length)

    {
        tableRows = numbers0.length;
    }

    else if (numbers.length > numbers0.length && numbers.length > numbers1.length)
    {
        tableRows = numbers.length;
    }
    else
    {
        tableRows = numbers1.length;
    }
    //model = new DefaultTableModel(col, 90);//50 is number of rows --You don't seem to need this

    Object[][] data = new String[tableRows][3];//3 is number of columns

    for (int x = 0; x < tableRows; x++ )
    {
        try
        {
            data[x][0] = numbers1[x];
        }
        catch (IndexOutOfBoundsException e)
        {
            data[x][0] = "  ";//error
        }

        try
        {
            data[x][1] = numbers[x];
        }
        catch (IndexOutOfBoundsException e)
        {
            data[x][1] = "  ";
        }

        try
        {
            data[x][2] = numbers0[x];
        }
        catch (IndexOutOfBoundsException e)
        {
            data[x][2] = "  ";
        }
    }



     //header.setBackground(Color.yellow);
    //    model = new DefaultTableModel(col,90);//50 is number of rows  

    String col[] = {"SBP","SSP","Period"};
    table=new JTable(data,col){@Override



       public boolean isCellEditable(int arg0, int arg1) {
    return false;
        }};

       JTableHeader header = table.getTableHeader();
header.setBackground(Color.yellow);
    contentPane.add(table);

        //table.setValueAt(SBPparagraphs.text(),0,0); //first number is moves placing down by 2 rows//2nd number is next cclumn and so on
        //table.setValueAt("fgfg",0,0);




        table.setSize(screenSize.width/2, (int) (screenSize.height/1.1));
        table.setBounds(16,50,400,2000);
    table.setLayout(null);
        table.setVisible(true);
//add(table.getTableHeader(), BorderLayout.NORTH);   
  //      table.setLayout(new BorderLayout());
//add(table, BorderLayout.CENTER);
    setDefaultCloseOperation(EXIT_ON_CLOSE);


}     





//to hear this all refers to the contentpane

    /**
     * @param args the command line arguments
     */


    public static void main(String[] args) throws SchedulerException, InterruptedException {
            // TODO code application logic here
// BasicConfigurator.configure();
        new Learningfromscrach(1);



        System.out.format("Task scheduled.. Now wait for 5 sec to see next message..%n");


    }




    //next step to understand how to get data into the panel

    @Override
    public void execute(JobExecutionContext jec) throws JobExecutionException {
        _log.info("Hello World! - " + new Date()); 
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

}

你只有一门课,从头开始学习。其中有一个主要功能。在您创建的主函数中另一个例子Learningfromscrach 现在传递给您的计时器,每 10 秒运行一次。当它在 10 秒内运行时,它会创建另一个 Learningfromscrach 实例,依此类推。

您实际上并不需要每 10 秒重新实现一次 Learningfromscrach。您想要的是数据每 10 秒更新一次。您应该能够在更新函数上设置一个每 10 秒运行一次的计时器。 (我现在无法做代码示例,但请调查一下,看看你能走多远。)

编辑:我重构了您的项目,消除了未使用的元素并添加了一些方法和 JScrollPane。希望这可以帮助。

import java.awt.*;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import javax.swing.table.*;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import java.util.Timer;
import java.util.TimerTask;
import java.awt.Toolkit;
import java.awt.BorderLayout;


public class Learningfromscrach extends JFrame 
{
    Toolkit toolkit;
    Timer timer = new Timer();
    DefaultTableModel model;
    JTable table;
    String url = "http://bmreports.com/bsp/additional/soapfunctions.php?element=SYSPRICE&dT=NRT";
    String col[] = {"SBP","SSP","Period"};
    JScrollPane scrollPane;

    public Learningfromscrach() 
    //tell java to initiate the create interface
    //this is what is passed to the timer every 10 seconds
    {
        createUserInterface();
    }

private void createUserInterface()
//all the parts to create the userinterface      
{//from here
    setLayout( new BorderLayout());
    setTitle("Cashout Prices");//setTitle is also a JAVA Parameter
    setVisible(true);    //makes the java application show


    table = CreateTable(url,col);

    scrollPane = new JScrollPane(table,
            ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
    add(scrollPane,BorderLayout.CENTER);
    pack();
    setSize(getWidth(), 200); //initial size

    setDefaultCloseOperation(EXIT_ON_CLOSE);

    int delay = 5000; //5 seconds
    int period = 5000; //5 seconds

    timer.scheduleAtFixedRate(new TimerTask() 
    {
        public void run() {
            RefreshTable(url, col);
            System.out.format("Task run..");
        }
    }, delay, period);
}     
private Object[][] GetTableInfo(String url)
{
      Document doc = null;
      try 
      {
            doc = Jsoup.connect(url).get();
      } 
      catch (IOException ex) 
      {
            Logger.getLogger(Learningfromscrach.class.getName()).log(Level.SEVERE, null, ex);
      }
      Elements Periodparagraphs;      
      Elements SSPparagraphs;
      Elements SBPparagraphs; 

      Periodparagraphs = doc.select("SP");//counts the number of SSP Paragraphs in the entire document
      SSPparagraphs = doc.select("SSP");//counts the number of SSP Paragraphs in the entire document
      SBPparagraphs = doc.select("SBP");//counts the number of SBP Paragraphs in the entire document

      String[] numbers1;
      numbers1 = Periodparagraphs.text().split(" ");

      String[] numbers;
      numbers = SSPparagraphs.text().split(" ");

      String[] numbers0;
      numbers0 = SBPparagraphs.text().split(" ");

      int tableRows;

      if (numbers0.length > numbers.length && numbers0.length > numbers1.length)
      {
          tableRows = numbers0.length;
      }
      else if (numbers.length > numbers0.length && numbers.length > numbers1.length)
      {
          tableRows = numbers.length;
      }
      else
      {
          tableRows = numbers1.length;
      }

      Object[][] data = new String[tableRows][3];//3 is number of columns

      for (int x = 0; x < tableRows; x++ )
      {
          try
          {
              data[x][0] = numbers1[x];
          }
          catch (IndexOutOfBoundsException e)
          {
              data[x][0] = "  ";//error
          }

          try
          {
              data[x][1] = numbers[x];
          }
          catch (IndexOutOfBoundsException e)
          {
              data[x][1] = "  ";
          }

          try
          {
              data[x][2] = numbers0[x];
          }
          catch (IndexOutOfBoundsException e)
          {
              data[x][2] = "  ";
          }
      }

    return data;
}

private JTable CreateTable(String url, String[] cols)
{
    JTable tempTable=new JTable(GetTableInfo(url),col)
    {
        @Override
        public boolean isCellEditable(int arg0, int arg1) 
        {
            return false;
        }   
    };

    JTableHeader header = tempTable.getTableHeader();
    header.setBackground(Color.yellow);

    tempTable.setLayout(null);
    tempTable.setVisible(true);

    return tempTable;
}

private void RefreshTable(String url, String[] cols)
{
    Object[][] info = GetTableInfo(url);
    for (int row = 0; row < info.length; row++)
    {
        for (int column = 0; column < cols.length; column++)
        {
            table.setValueAt(info[row][column],row, column);
        }
    }
}

public static void main(String[] args) throws InterruptedException 
{
    // TODO code application logic here
    // BasicConfigurator.configure();
    new Learningfromscrach();

    System.out.format("Task scheduled.. Now wait for 5 sec to see next message..%n");
}

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试每 x 秒执行一次文件 的相关文章

  • 如何查看Pocketsphinx词典中是否存在该单词?

    我只是想看看字典文件中是否存在字符串 字典文件位于问题底部 我想检查语音识别器是否可以识别单词 例如 识别器将无法识别字符串ahdfojakdlfafiop 因为字典中没有定义 所以 我可以检查某个单词是否在 pocktsphinx 词典中
  • HTTP 状态 404 - 请求的资源不可用

    在使用 MyEclipse IDE 中的 Tomcat 服务器和 Struts 2 框架时 我遇到了反复出现的问题 我将我的程序作为服务器应用程序运行 当它运行时 默认的index jsp 文件将成功打开 但应用程序的其他过去都不起作用 当
  • 任务“:app:dexDebug”执行失败

    我目前正在处理我的项目 我决定将我的 Android Studio 更新到新版本 但在我导入项目后 它显示如下错误 Information Gradle tasks app assembleDebug app preBuild UP TO
  • java中的csv到pdf文件

    我正在尝试获得一个csv文件解析为pdf 到目前为止我所拥有的内容附在下面 我的问题是这段代码最终出现在 pdf 中的文件在 csv 文件的第一行被截断 我不明白为什么 附示例 本质上我想要一个没有任何操作的 csv 文件的 pdf 版本
  • 检查双精度值的等于和不等于条件

    我在比较两者时遇到困难double values using and 我创建了 6 个双变量并尝试进行比较If健康 状况 double a b c d e f if a b c d e f My code here in case of t
  • 如何打印整个字符串池?

    我想打印包含文字的整个字符串池String使用添加的对象intern 就在垃圾收集之前 JDK有没有隐式的方法来进行这样的操作 我们如何检查字符串池 EDIT The comment suggests that there may be a
  • Google Inbox 类似 RecyclerView 项目打开动画

    目前 我正在尝试实现 Google Inbox 例如RecyclerView行为 我对电子邮件打开动画很好奇 我的问题是 该怎么做 我的意思是 他们使用了哪种方法 他们用过吗ItemAnimator dispatchChangeStarti
  • PropertySources 中各种源的优先级

    Spring引入了新的注释 PropertySources对于所有标记为的类 Configuration since 4 0 需要不同的 PropertySource作为论证 PropertySources PropertySource c
  • Spring Stomp over Websocket:流式传输大文件

    我的SockJs客户端在网页中 发送帧大小为16K的消息 消息大小限制决定了我可以传输的文件的最大大小 以下是我在文档中找到的内容 Configure the maximum size for an incoming sub protoco
  • 使用 Java 在浏览器中下载 CSV 文件

    我正在尝试在 Web 应用程序上添加一个按钮 单击该按钮会下载一个 CSV 文件 该文件很小 大小仅约 4KB 我已经制作了按钮并附加了一个侦听器 文件也准备好了 我现在唯一需要做的就是创建单击按钮时下载 csv 文件的实际事件 假设 fi
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 打印包含 JBIG2 图像的 PDF

    请推荐一些库 帮助我打印包含 JBIG2 编码图像的 PDF 文件 PDFRenderer PDFBox别帮我 这些库可以打印简单的 PDF 但不能打印包含 JBIG2 图像的 PDF PDFRenderer尝试修复它 根据 PDFRedn
  • 让JScrollPane控制多个组件

    对于我的应用程序 我正在设计一个脚本编辑器 目前我有一个JPanel其中包含另一个JPanel保存行号 位于左侧 以及JTextArea用于允许用户输入代码 位于右侧 目前 我已经实施了JScrollPane on the JTextAre
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 在 Selenium WebDriver 上如何从 Span 标签获取文本

    在 Selenium Webdriver 上 如何从 span 标记检索文本并打印 我需要提取文本UPS Overnight Free HTML代码如下 div id customSelect 3 class select wrapper
  • 阻止 OSX 变音符号为所有用户禁用 Java 中的 KeyBindings?

    注 我知道这个问题 https stackoverflow com questions 40335285 java keybinds stop working after holding down a key用户必须输入终端命令才能解决此问
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • 使用 eclipse IDE 配置 angularjs

    我想开始使用 AngularJs 和 Java Spring 进行开发 我使用 Eclipse 作为 IDE 我想配置我的 Eclipse 以使这些框架无缝工作 我知道我可能要求太多 但相信我 我已经做了很多研究 你们是我最后的选择 任何帮

随机推荐

  • Spark:将 2 元组键 RDD 与单键 RDD 连接的最佳策略是什么?

    我有两个想要加入的 RDD 它们看起来像这样 val rdd1 RDD T U val rdd2 RDD T W V 碰巧的是 关键值rdd1是唯一的 并且元组键值rdd2是独一无二的 我想加入这两个数据集 以便得到以下 rdd val r
  • adb 无法将 .apk 文件复制到 Android 模拟器:没有这样的文件或目录

    我在让 MyFirstApp Hello World Android 应用程序在模拟器中运行时遇到了障碍 我正在按照以下网址的说明进行操作 http developer android com training basics firstap
  • 从 XSL 调用 Java (SAXON)

    我正在尝试使用 java 中的 Saxon 处理器 我正在使用saxon9ee jar里面 saxonee9 3 0 11j zip 刚刚下载 没有许可证 是否需要它才能工作 Their 可以在这里找到资源 http www saxonic
  • Swift - 圆角半径和投影问题

    我正在尝试创建一个按钮圆角 and a 阴影 无论我如何切换 该按钮都无法正确显示 我试过了masksToBounds false and masksToBounds true 但是要么圆角半径起作用而阴影不起作用 要么阴影起作用而圆角半径
  • @ManagedBean @Component 类中的 @Autowired 服务在 JSF 请求期间为 null [重复]

    这个问题在这里已经有答案了 我尝试过将 Spring 3 MVC 与 JSF 2 结合起来 我在 Spring 和 JSF 方面有一些经验 但之前从未尝试过加入它们 最后我有2个文件 ManagedBean name userBean Sc
  • CUDA C++11,lambda 数组,按索引的函数,不起作用

    我在尝试让 CUDA 程序按索引管理 lambda 数组时遇到问题 重现问题的示例代码 include
  • responseText 有效,但 responseXML 始终为 null

    我已经浏览了这里可以找到的所有答案 但无法解决这个问题 我很确定我没有错过任何明显的事情 我正在尝试加载基于经纬度的地图标记 问题是 当我尝试返回 AJAX 响应时 responseXML 始终为 null 如果我使用responseTex
  • 如何使用 Facebook GRAPH API 删除 Facebook 评论帖子?

    我开始研究这个是因为我希望能够删除 Facebook 活动墙上的评论 因为 删除帖子 似乎不适用于活动墙上的评论 然而 由于我不知道是否有可能 我决定看看是否可以手动删除我在自己的墙上发布的帖子 因为这是可能的 注意我是NOT使用任何 SD
  • Intent.getExtras() 总是返回 null

    我正在尝试通过通知和事件运行活动onCreate我想 重定向 为此添加对信息的思考Intent班级 一个重要的特性是生成通知的类是通过服务执行的 我从中检索上下文getApplicationContext类提供的方法android app
  • 在文件名前批量添加字符串

    我正在处理 Windows 批处理文件 需要更改当前目录中的文件名 我有这些文件 file1 txt file2 txt file3 txt 我需要在每个文件名之前添加字符串 REG 如下所示 REG file1 txt REG file2
  • VBA控制功能区?

    我正在为 Excel 2010 创建 VBA 加载项 我使用了 Microsoft Office 的自定义 UI 编辑器 创建我自己的功能区的工具 但是 我想为用户提供加载我的加载项的选项 而不显示功能区 或者显示功能区的不同部分 通过菜单
  • tf_agents 自定义 time_step_spec

    我正在修改 tf agents 但在定制时遇到问题time step spec 我正在尝试在健身房 Breakout v0 中训练 tf agent 我已经制作了一个函数来预处理观察结果 游戏像素 现在我想修改 time step 和 ti
  • Silverlight Web 服务调用在 Studio 中可以工作,但从网站运行时失败

    我们正在构建一个 Silverlight 应用程序并调用 Silverlight WCF 服务 从 Visual Studio 运行应用程序时 一切正常 当我们部署到网站并运行应用程序时 每次调用 Web 服务时 我们都会收到以下错误 或类
  • 何时使用“sbt 程序集”和“sbt 编译 && sbt 包”?

    我想知道我什么时候应该使用sbt assembly什么时候sbt compile sbt package 我正在使用 Intellij IDEA 在本地计算机上编写一个程序 并使用以下命令进行编译sbt compile sbt packag
  • 如何使用外部自定义 CSS 覆盖 Bootstrap 3 样式?

    如何使用外部自定义 CSS 覆盖 Bootstrap 3 样式 div class navbar navbar inverse navbar fixed top div CSS navbar inverse background color
  • 释放NSTimer的正确方法?

    在我的 dealloc 方法中释放 NSTimer 的正确方法是什么 它是用以下代码创建的 void mainTimerLoop mainTimer NSTimer scheduledTimerWithTimeInterval 1 10 t
  • Eclipse Luna:未调用处理程序的 @CanExecute 方法

    我在 Eclipse Luna RCP 中的命令处理程序遇到问题 在我的 E4 应用程序模型中 我定义了一些必须启用的命令和相关处理程序 仅在某些情况下 因此 在我的处理程序 POJO 中 我实现了 注释为的方法 CanExecute我在其
  • MySql 查询-日期范围内的日期范围

    我使用 mySql 5 和 IIS I have products 有一个start date场和一个end date field 我需要运行一个查询 该查询将获取用户输入的开始日期和结束日期 并输出产品在日期范围内运行的天数 Exampl
  • 列表上的哈希函数与其中项目的顺序无关

    我想要一个为一组整数分配值的字典 例如key is 1 2 3 and value会有一定的价值 事情是这样的 3 2 1 在我的情况下需要进行相同的处理 因此如果我采用散列方法 散列需要相等 该套装将包含 2 至 10 件物品 项目的总和
  • 尝试每 x 秒执行一次文件

    请查找每 10 秒重复一次的更新代码 然而问题是它每 10 秒在屏幕上创建一个新的 GUI 而不是每 10 秒只更新数据 请你给个建议 package learningfromscrach import java awt import ja