나는 텍스트 파일의 데이터를 읽고 사용자가 it.i에서 편집 한 후에 다른 텍스트 파일에 저장하는 UI를 만들고 있는데, 6 열을 제외한 모든 열에 정수 값을 반환하고 7.For 열 6 및 7 double 값을 반환하려면.이 프로그램의 모든 항목을 잘 6 열 및 7 열 때 사용자가 정수 값을 입력 할 때까지 편집 할 때 그것은 셀에 빨간색 표시를 보여줍니다 반면 나는 이중해야합니다.은 JTable에서 Double 값을 반환 할 수 없습니다.
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class Read extends JFrame
{
private JTable table;
private DefaultTableModel model;
@SuppressWarnings("unchecked")
public Read()
{
String aLine ;
Vector columnNames = new Vector();
Vector data = new Vector();
try
{
FileInputStream fin = new FileInputStream("test1.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fin));
StringTokenizer st1 = new StringTokenizer(br.readLine(), " ");
while(st1.hasMoreTokens())
{
columnNames.addElement(st1.nextToken());
}
while ((aLine = br.readLine()) != null)
{
StringTokenizer st2 = new StringTokenizer(aLine, " ");
Vector row = new Vector();
while(st2.hasMoreTokens())
{
row.addElement(st2.nextToken());
}
data.addElement(row);
}
br.close();
}
catch (Exception e)
{
e.printStackTrace();
}
final JTable table = new JTable(new DefaultTableModel(data, columnNames){
private static final long serialVersionUID = 1L;
@Override
public Class getColumnClass(int column) {
return Integer.class;
}
});
JScrollPane scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane);
JPanel buttonPanel = new JPanel();
getContentPane().add(buttonPanel, BorderLayout.SOUTH);
JButton button1 = new JButton("Save");
buttonPanel.add(button1);
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (table.isEditing())
{
int row = table.getEditingRow();
int col = table.getEditingColumn();
table.getCellEditor(row, col).stopCellEditing();
}
int rows = table.getRowCount();
int columns = table.getColumnCount();
try {
StringBuilder con = new StringBuilder();
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
Object Value = table.getValueAt (i, j);
con.append(" ");
con.append(Value);
}
con.append("\r\n");
}
FileWriter fileWriter = new FileWriter(new File("new.txt"));
fileWriter.write(con.toString());
fileWriter.flush();
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
}
public static void main(String[] args)
{
Read a = new Read();
a.setDefaultCloseOperation(EXIT_ON_CLOSE);
a.pack();
a.setVisible(true);
}
}
텍스트 파일
: 열 여섯과 열 7.please 도움코드 값
1 2 3 4 5 6 7 8
78 12 12 45 4 0.0045 0.0078 45
45 45 69 56 7 0.0056 0.0023 21
45 89 76 42 1 0.0036 0.0023 36
'getColumnClass'가'Integer.class; '만 반환하면 어떻게 두 배를 지원한다고 생각합니까? – MadProgrammer
['StringTokenizer' API] (http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html)에 설명 된대로 단지 FYI입니다. - "'StringTokenizer'는 레거시 클래스는 호환성을 위해 유지되지만 새로운 코드에서는 사용하지 않는 것이 좋습니다.이 기능을 사용하려는 사람은 누구나'string'의'split' 메소드를 사용하는 것이 좋습니다. –
또한 값을 파싱 한 후 벡터 –