当前位置: 首页 > 面试题库 >

如何读取文件,将数据放入JTable,然后修改单元格/删除行并将数据保存到文件中?

萧心水
2023-03-14
问题内容

我需要从.txt文件中读取的日期并将其放入GUI中的JTable中,然后修改一些记录或删除一些行并将新数据保存到该文件中。我可以阅读并显示JTable,但如何使用GUI编辑日期或删除JTable中的某些行,然后将其保存到文件中?


问题答案:

但是如何编辑

您需要重写返回的isCellEditable(...)方法。DefaultTableModel``true

使用GUI删除JT​​able中的某些行

您需要知道选择了哪一行,然后使用的removeRow(...)方法DefaultTableModel删除该行。

例如:

import java.awt.*;
import java.awt.event.*;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.*;
import javax.swing.table.*;

public class ItemDeletion extends JPanel
{
    private JList<String> list;
    private JTable table;

    public ItemDeletion()
    {
        setLayout( new BorderLayout(5, 5) );

        String[] items =
        {
            "One",
            "Two",
            "Three",
            "Four",
            "Five",
            "Six",
            "Seven",
            "Eight",
            "Nine",
            "Ten"
        };

        //  Add the list

        DefaultListModel<String> listModel = new DefaultListModel<String>();

        for (String item: items)
            listModel.addElement( item );

        list = new JList<String>( listModel );


        JButton listDelete = new JButton( "Delete From List" );
        listDelete.addActionListener( new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                DefaultListModel model = (DefaultListModel)list.getModel();
                int row = list.getSelectedIndex();

                while (row != -1)
                {
                    model.removeElementAt( row );
                    row = list.getSelectedIndex();
                }
            }
        });

        JPanel listPanel = new JPanel( new BorderLayout(5, 5) );
        listPanel.add(new JScrollPane( list ), BorderLayout.CENTER);
        listPanel.add(listDelete, BorderLayout.PAGE_END);

        //  Add the table

        DefaultTableModel tableModel = new DefaultTableModel(0, 1);
        List<String> tableItems = Arrays.asList( items );
        Collections.shuffle( tableItems );

        for (String item: tableItems)
        {
            System.out.println( item );
            tableModel.addRow( new String[]{item} );
        }

        table = new JTable( tableModel );

        table.setAutoCreateRowSorter(true);
        ((DefaultRowSorter)table.getRowSorter()).toggleSortOrder(0);

        JButton tableDelete = new JButton( "Delete From Table" );
        tableDelete.addActionListener( new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                DefaultTableModel model = (DefaultTableModel)table.getModel();
                int row = table.getSelectedRow();

                while (row != -1)
                {
                    int modelRow = table.convertRowIndexToModel( row );
                    model.removeRow( modelRow );
                    row = table.getSelectedRow();
                }
            }
        });

        JPanel tablePanel = new JPanel( new BorderLayout(5, 5) );
        tablePanel.add(new JScrollPane( table ), BorderLayout.CENTER);
        tablePanel.add(tableDelete, BorderLayout.PAGE_END);

        add(listPanel, BorderLayout.LINE_START);
        add(tablePanel, BorderLayout.LINE_END);
    }

    private static void createAndShowGUI()
    {
        JFrame frame = new JFrame("Multiple Item Deletion");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new ItemDeletion(), BorderLayout.NORTH);
        frame.setLocationByPlatform( true );
        frame.pack();
        frame.setVisible( true );
    }

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

保存到文件?

您需要从中获取数据DefaultTableModel。您可以使用该getValueAt(...)方法检索每个值。

因此,您需要创建类似以下的代码

for (each row);
{
    StringBuilder sb = new StringBuilder();

    for ( each column)
    {
        Object data = model.getValueAt(...);
        sb.append( data.toString() );
    }

    write the sb.toString() to the file
}


 类似资料:
  • 问题内容: 是否可以将JSON数据保存到本地文本文件中?因此,稍后我可以通过加载该文件再次使用它,并取回存储的JSON数据。其实我真正想做的是在文本文件中导出JSON数据,以便以后可以用作import.Any的建议或解决方案? 这是我要用于导出到文本的一些示例。 http://jsfiddle.net/k56eezxp/ 问题答案: 是否可以将JSON数据保存到本地文本文件中? 是。当前,链接的j

  • 问题内容: 我有这个项目: 导入文件 连接到SQL Server数据库 将所有数据转移到数据库中 文本文件按选项卡划分为四个字段,例如数据库。 我已经完成了使用富文本框并将所有数据保存在字符串中的第一步。我的想法是将字符串拆分为每行并将其保存在数组中,然后:如何拆分每一行,以便可以正确保存字段?如何将SQL Server上的数据库连接到C#上的项目? 问题答案: 让我们一次解决这一步骤… 获取数据

  • 问题内容: 我需要从XML文件中获取数据并将其存储到MySQL数据库中。我正在考虑使用SAX解析器来解析数据,但是我不确定如何将数据有效地存储到数据库中,我正在考虑使用JDBC和Hibernate等少数技术,但是我想问一问有效的处理方式它? 注意:此处的编程语言是Java。 问题答案: 您可以使用Castor witch是一个开放源数据绑定框架,用于将数据从XML移动到Java编程语言对象以及从J

  • 我读过其他一些类似于此的问题,但都使用了imports和extras,除了importjava.io.*之外,我不想使用任何imports;也没有任何名单。另外,这个is方法中的for循环是我在搞乱它,因为我无法弄清楚它。 }public static void main(string[]args)抛出IOException,FileNotFoundException{int[]array=pro

  • 要常常喜乐,不住地祷告,凡事谢恩,因为这是神在基督耶稣里向你们所定的旨意。不要消灭圣灵的感动,不要藐视先知的讲论。但要凡事察验,善美的要持守,各样的恶事要禁戒不作。(1 THESSALONIANS 5:16-22) 将数据存入文件 在《文件(1)》和《文件(2)》中,已经学习了如何读写文件。 程序执行结果,就是产生一些数据,一般情况下,这些数据数据要保存到磁盘中,最简单的方法就是写入到某个文件。但