Я делаю ui, в котором я читаю данные из текстового файла в JTable, пользователь может редактировать в JTable, а затем сохранять данные в другой текстовый файл. Мне нужна кнопка обновления, чтобы, если пользователь редактирует JTable и не хочет, чтобы изменения были сделаны, можно нажать кнопку обновления, а данные будут предыдущими данными, считываемыми из текстового файла.Кнопка обновления в Jtable
Вот код:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class Bb extends JFrame
{
private JTable table;
private DefaultTableModel model;
@SuppressWarnings("unchecked")
public Bb()
{
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();
}
}
});
JButton button3 = new JButton("Refresh");
buttonPanel.add(button3);
button3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
}
});
}
public static void main(String[] args)
{
Bb Re = new Bb();
Re.setDefaultCloseOperation(EXIT_ON_CLOSE);
Re.pack();
Re.setVisible(true);
}
}
текст файла:
a b c d e f e
78 12 12 45 45 45 78
45 45 69 56 78 56 23
45 89 76 42 15 36 23
вы можете сохранить их в переменных перед редактированием пользователя или снова прочитать текстовый файл –
Довольно многое, что сказал @getlost, но кроме этого я действительно не вижу здесь вопроса. Голосование закрывается как «неясное». –