Так что я сейчас работаю над проектом, и мне нужно JTable для отображения счетов-фактур. Счета хранятся в текстовом файле в форматеСоздайте 2D-массив из текстового файла/массива
InvoiceID, InvoiceDate, InvoiceCustomer, InvoiceComplete
(интермедиат, String, String, Boolean)
Для других частей моего программа, каждая строка считывается и создается объект-фактура.
Однако для моего JTable я не слишком уверен, как создать 2D-массив с данными текстового файла. Я думал, что, возможно, попытаюсь сделать это, сначала создав массив, но я не слишком уверен. 2D-массив должен быть типа Object, так как он будет хранить счета-фактуры, поэтому я могу установить флажок в JTable.
В настоящее время у меня сейчас есть пустой класс с JTable для этой задачи. Любой совет будет принят во внимание. Благодаря
UPDATE:
JPanel invoiceViewPanel= new JPanel(null); //layout
Object data[][]= new Object[4][10];
String columnHeaders[]={"Invoice ID","Invoice Name","Customer", "Complete?"};
DefaultTableModel model = new DefaultTableModel(data, columnHeaders) {
boolean[] Editable= new boolean[]{
false, false, false, true
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return editableCells[columnIndex];
}
@Override
public Class<?> getColumnClass(int columnIndex)
{
return columnClass[columnIndex];
}
};
JTable table=new JTable(model);
JScrollPane tableContainer=new JScrollPane(table);
final Class[] columnClass = new Class[]
{
Integer.class, String.class, String.class, Boolean.class
};
public void launch()
{
this.setLayout(new FlowLayout());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(invoiceViewPanel);
invoiceViewPanel.add(tableContainer);
createObject();
this.add(tableContainer);
this.setTitle("Invoices");
this.setSize(500,600);
this.setVisible(true);
this.setResizable(false);
}
public void tableData()
{
try
{
FileReader reader = new FileReader("Invoices.txt");
BufferedReader bReader = new BufferedReader(reader);
String sReadline = bReader.readLine();
int x=0;
while(sReadline!=null)
{
String[] invoiceData= sReadline.split(",");
data[x][0]=Integer.parseInt(invoiceData[0]);
data[x][1]=invoiceData[1];
data[x][2]=invoiceData[2];
data[x][3]=Boolean.parseBoolean(invoiceData[1]);
x=x+1;
sReadline=bReader.readLine();//sreadline
}
}
catch (Exception e)
{
System.out.println(e);
}
}
Хотя я пытался индивидуально назначая значения массива, либо я получаю ArrayIndexOutOfBoundsException или JTable просто до сих пор приходит в пустой
'Object [] [] таблица = новый объект [п] [4];' Так как вы знаете тип каждого столбца, вы можете бросить их соответственно – rafid059