格式化JTable,如文本文件中所示? [英] Format the JTable as shown in Text File?

查看:75
本文介绍了格式化JTable,如文本文件中所示?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将文本文件读入JTable,但这是我的JTable看起来像现在的样子:

Hi i am reading a text file into JTable, but here is what my JTable Looks Like Now:

如何正确设置其格式并允许用户编辑JTable?

How can I format it correctly and allow JTable to be editable by users?

我的文本文件:文件名(people.txt)

My Text File: File Name(people.txt)

COLUMN_NAME COLUMN_TYPE IS_NULLABLE COLUMN_KEY  COLUMN_DEFAULT  EXTRA   
Names   VARCHAR(500)    NO  
Address VARCHAR(500)    NO

到目前为止的编码:

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

   public class stackq extends AbstractTableModel {
    Vector data;
    Vector columns;

    public stackq() {
            String line;
            data = new Vector();
            columns = new Vector();
            try {
                    FileInputStream fis = new FileInputStream("D:/joy/text/people.txt");
                    BufferedReader br = new BufferedReader(new InputStreamReader(fis));
                    StringTokenizer st1 = new StringTokenizer(br.readLine(), " ");
                    while (st1.hasMoreTokens())
                            columns.addElement(st1.nextToken());
                    while ((line = br.readLine()) != null) {
                            StringTokenizer st2 = new StringTokenizer(line, " ");
                            while (st2.hasMoreTokens())
                                    data.addElement(st2.nextToken());
                    }
                    br.close();
            } catch (Exception e) {
                    e.printStackTrace();
            }
    }

    public int getRowCount() {
            return data.size() / getColumnCount();
    }

    public int getColumnCount() {
            return columns.size();
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
            return (String) data.elementAt((rowIndex * getColumnCount())
                            + columnIndex);
    }

     public String getColumnName(int i){
         return (String)columns.get(i);
              }


      public static void main(String s[]) {
            stackq model = new stackq();
            JTable table = new JTable();
            table.setModel(model);
           JScrollPane scrollpane = new JScrollPane(table);
            JPanel panel = new JPanel();
            panel.add(scrollpane);
            JFrame frame = new JFrame();
            frame.add(panel, "Center");
            frame.pack();
            frame.setVisible(true);
         }
      }

非常感谢您.

推荐答案

public Stackq() {
String line;
data = new Vector();
columns = new Vector();
int count = 0;
try {
    FileInputStream fis = new FileInputStream("D:\\1.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(fis));
    StringTokenizer st1 = new StringTokenizer(br.readLine(), " ");
    while (st1.hasMoreTokens()) {
    columns.addElement(st1.nextToken());
    count++;
    }
    while ((line = br.readLine()) != null) {
    StringTokenizer st2 = new StringTokenizer(line, " ");
    for (int i = 0; i < count; i++) {
        if (st2.hasMoreTokens())
        data.addElement(st2.nextToken());
        else
        data.addElement("");
    }
    }
    br.close();
} catch (Exception e) {
    e.printStackTrace();
}
}

只需为首部计数添加一个计数变量,然后将空字符串添加到令牌向量返回null的数据向量中即可.

Just add one count variable for header count, and add the empty string into the data vector where tokenizer returns null.

这篇关于格式化JTable,如文本文件中所示?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆