使用本地 JSON 文件填充 Jtable

2024-01-08

我试图从 json 文件中获取所有数据并将数据填充到 jtable 中,我已经从 json 文件中获取数据并打印输出,但是当我尝试将数据填充到 jtable 中时,我无法将数据放入 jtable 中我的循环最终将插入数据的帧相乘。请帮助我,我的代码如下:

我已经导入了所需的所有罐子。

public Main(){
    super(new GridLayout(1,0));
    BufferedReader br = null;
    JSONParser parser = new JSONParser();
    String inputline;
    try {
        br = new BufferedReader(new FileReader("/Users/lyod/Documents/sample.json"));
        try {
            String id = null,
            component = null,
            title = null,
            lat = null,
            lng = null,
            cost = null,
            status = null;
            Object[][] data;
            while ((inputline = br.readLine()) != null) {
                JSONArray a = (JSONArray) parser.parse(inputline);
                String[] columns = new String[] {
                    "Id", 
                    "Title",
                    "Component",
                    "LAT",
                    "LNG",
                    "Cost"
                };
                for (Object o : a) {
                    JSONObject sample = (JSONObject) o;
                    id = (String) sample.get("id");
                    component = (String) sample.get("component");
                    title = (String) sample.get("title");
                    lat = (String) sample.get("lat");
                    lng = (String) sample.get("lng");
                    cost = (String) sample.get("cost");
                    status = (String) sample.get("status");
                    Object[][] data = new Object[][] {
                        {id,title,component,lat,lng,cost, false },
                    };
                }
                JTable table = new JTable(data, columns);
                add(new JScrollPane(table));
                JFrame frame = new JFrame("test v2");
                frame.add(table);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

public static void main(String args[]){
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new Main();
        }
    });
}

以下是从常规文本文件填充数据的示例。它演示了在循环中从文件读取数据,然后在循环完成后创建表的概念。

import java.awt.*;
import java.io.*;
import javax.swing.*;
import javax.swing.table.*;

public class TableFromFile extends JPanel
{
    public TableFromFile()
    {
        setLayout( new BorderLayout() );

        JTable table = new JTable( getTableModel() );
        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        JScrollPane scrollPane = new JScrollPane( table );
        add( scrollPane );
    }

    private TableModel getTableModel()
    {
        String delimiter = ":";
        DefaultTableModel model = new DefaultTableModel();

        try
        {
            BufferedReader reader = getFileReader();

            //  First line will contain the column names

            String line = reader.readLine();
            model.setColumnIdentifiers( line.split(delimiter) );

            //  Remaining lines in the file will be the data

            while ((line = reader.readLine()) != null)
            {
                model.addRow( line.split(delimiter) );
            }

            reader.close();
        }
        catch(Exception e) { System.out.println(e); }


        return model;
    }

    private BufferedReader getFileReader()
    {
        //  Create data to simulate reading data from a file

        String data =
            "Letter:Number\n" +
            "A:1\n" +
            "B:2\n" +
            "C:3";

        BufferedReader reader = new BufferedReader( new StringReader( data ) );

        //  In your real application the data would come from a file

        //Reader reader = new BufferedReader( new FileReader(...) );

        return reader;
    }

    private static void createAndShowUI()
    {
        JFrame frame = new JFrame("Table From File");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add( new TableFromFile() );
        frame.pack();
        frame.setLocationRelativeTo( null );
        frame.setVisible( true );
    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowUI();
            }
        });
    }
}

我不知道 JSON 文件的格式是什么样的,但“概念”应该是相同的。

所以将读取一行数据并解析数据的逻辑替换为解析一行JSON数据的逻辑。

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

使用本地 JSON 文件填充 Jtable 的相关文章

随机推荐

  • 从流中读取数据的最有效方法

    我有一种使用对称加密来加密和解密数据的算法 无论如何 当我要解密时 我有 CryptoStream cs new CryptoStream ms cryptoTransform CryptoStreamMode Read 我必须从 cs C
  • 来自产品 ID 的 MSI 产品代码?

    我正在尝试将 MSI 产品代码 GUID 转换为用于标识 MSI 注册表项中已安装项目的产品代码 ID 有这方面的API吗 如果不是 这该怎么办 Warning Microsoft 强烈建议您不要弄乱他们的 MSI 注册表项 但如果您确实必
  • 如何删除 AWS ECS 任务定义?

    在 Amazon 的 EC2 容器服务中创建任务定义后 如何删除或移除它 It s a 已知问题 https forums aws amazon com thread jspa threadID 170378 一旦取消注册任务定义 它就会进
  • PHP:没有连接的字符串中的变量

    如果我在这个字符串中有一个变量 var echo Hello there are many vars Php 寻找variable vars代替 var 没有连接 如 Hello there are many var s 还有另一种方法可以
  • Jboss不部署战争,JBAS011006

    我需要你的帮助 我正在尝试将 WAR 部署到 Jboss Application Server 7 1 但无法实现 我通过 Web 控制台部署它 它在部署过程中冻结 没有任何错误 这是我的 server log http rghost ru
  • HTML5

    我想知道这是什么意思
  • 更好的说法是 x == Foo::A || x == Foo::B || x == Foo::C || ...?

    假设我有一堆众所周知的价值观 就像这样 但是const char 这只是一个例子 可能更复杂 const char A A B B C C D D E E F F G G 现在假设如果某个表达式的结果位于这些表达式的子集中 我想以特定的方式
  • 简单的 yacc 语法给出错误

    我有一个关于 yacc 编译器的问题 我不编译简单的 yacc 语法 这是代码部分 anbn 0 y token A B start anbn n printf is in anbn 0 n return 0 anbn empty A an
  • before(:each) 与之前

    我是 ruby on Rails 的新手 并进行测试 之间有区别吗 before each do some test code end and before do some test code end The before方法接受一个sco
  • write()-Python 3.x 中的编码字符串

    我有一个 unicode 字符串 我想将其写入文件中 在 Python 2 中我可以这样写 open filename w write s encode utf 8 但这对于 Python 3 来说失败了 显然 s encode 返回 by
  • 如何根据文本长度增加UITextview高度,如whatsapp

    我已经使用 websocket 在我的 iOS 应用程序中实现了聊天功能 它对我来说工作得很好 问题是我想增加 UITextView 的高度 而 UITableView 应该根据 UITextView 增加的高度向上移动 谁能帮我 以下是我
  • 使用过滤器返回对象中的属性值

    尝试创建一个使用 filter 但不使用 for 或 while 循环或 foreach 函数的函数 该函数将循环遍历对象数组 仅返回其属性值 例如 function getShortMessages messages return mes
  • 带有 addrinfo 结构的智能指针

    我需要处理两个结构addrinfo指针 由于我使用 C 11 进行编码 因此我必须使代码异常安全 事实上 我的构造函数可能会抛出一个runtime error 当你不再需要那种结构时 你应该调用freeaddrinfo为了释放结构内的列表
  • MailSystem.Net 删除邮件,IndexOnServer 属性 = 0

    我在用着邮件系统 NET http mailsystem codeplex com并尝试从服务器删除消息 问题是 IndexOnServer 属性为 0 我收到以下错误 Command store 0 flags silent Delete
  • 给定单词向量(而不是单词本身),获取最相似的单词

    使用gensim models Word2Vec库 您可以提供一个模型和一个 单词 您希望找到最相似单词的列表 model gensim models Word2Vec load word2vec format model file bin
  • TFS 2017 版本定义。 WinRM - IIS Web 应用程序管理任务。在“默认网站”下创建应用程序

    我正在制定一个发布定义 它将把一个网站部署到测试 IIS 服务器 Windows Server 2012 IIS 8 我想使用 IIS Web 应用程序管理任务在 默认网站 Scott 下创建和配置应用程序或虚拟目录 当我指定 默认网站 S
  • 为什么 google.load 会导致我的页面变成空白?

    嗯 这看起来很奇怪 但我找不到解决方案 为什么这个小提琴会演奏http jsfiddle net carlesso PKkFf http jsfiddle net carlesso PKkFf 显示页面内容 然后当 google load
  • PHP 友元/包可见性

    有没有办法限制 PHP 中的可见性 就像 Java 中的 包 可见性或至少 C 中的 朋友 可见性一样 维护大型 OOP 项目并且不让任何人使用代码的任何部分的最佳实践是什么 我尽可能多地使用私有和受保护的可见性 但有时这还不够 我知道这个
  • Angularjs - 使用指令添加 ng-* 属性

    我正在尝试将简单的 ng mouseover 绑定添加到由指令管理的元素 但无法让它发挥作用 http jsbin com aqibij 2 edit http jsbin com aqibij 2 edit 我尝试在添加 ng mouse
  • 使用本地 JSON 文件填充 Jtable

    我试图从 json 文件中获取所有数据并将数据填充到 jtable 中 我已经从 json 文件中获取数据并打印输出 但是当我尝试将数据填充到 jtable 中时 我无法将数据放入 jtable 中我的循环最终将插入数据的帧相乘 请帮助我