Я пытаюсь напечатать данные в файл, но java создать файл, не записывая никаких данных.почему Java только создает файл без записи каких-либо данных в него
Данные хранятся в ArrayList, и я думаю, проблема из-за метода sData.size(). Часть метода действия используется, когда пользователь щелкает значок сохранения, и таблица не будет иметь никаких данных. Пользователь нажимает кнопку, чтобы добавить данные в Jtable.
Часть кода в конце дает сообщение об ошибке java.lang.NullPointerException
.
public class ee extends JFrame {
String[] columnNames = {"#", "c1", "c2", "data column"};
public final JTable table;
JToolBar toolBar;
private final JTextField enterText,startTime,endTime;
static DefaultTableModel cModel ;
JButton Obutton;
int counter = 1;
public static ArrayList<String> sData = new ArrayList<String>();
public static ArrayList<String> eData = new ArrayList<String>();
public static ArrayList<String> tData = new ArrayList<String>();
public static void main(String[] args) throws IOException
{
ee is = new ee("iss");
}
//the constrictor
public ee(String title){
cModel =new DefaultTableModel(columnNames, 0);
table = new JTable(cModel);
метод действия
Action saveAction = new AbstractAction("Save", saveIcon) {
@Override
public void actionPerformed(ActionEvent e) {
File myFile = new File("the-file-name.txt");
try (PrintWriter writer = new PrintWriter(myFile)) {
for (int i =0 ; i< sData.size(); i++)
{
writer.println(i+1 + "\n");
writer.println(sData.get(i)+" --> " + eData.get(i));
writer.println(tData.get(i)+"\n");
}
}catch(FileNotFoundException ioEx){
}
}
};
}
принимает данные из JTable и сохранить его в ArrayList
public static ArrayList<String> getTableSTimeData(){
sData = new ArrayList<String>();
for (int i=0; i < cModel.getRowCount(); i++){
Object val = cModel.getValueAt(i, 1); // value of ith row and 3rd column
sData.add((String) val);
}
return sData;
}
путь данных вставки в JTable
public class MenuBarMethod implements ActionListener{
@Override
public void actionPerformed(ActionEvent a){
Object buttonPressed=a.getSource();
if(buttonPressed.equals(Obutton)){
String STime = startTime.getText();
String ETime = endTime.getText();
String text = enterText.getText();
clearEntity();
cModel.addRow(new Object[] {getCounter(),STime, ETime, text});
}
}
}
}
'getTableSTimeData()' метод никогда не вызывается, следовательно, '' sData' является null'. – Braj
Посмотрите на комментарий и код 'Object val = cModel.getValueAt (i, 1); // значение i-й строки и 3-го столбца – Braj
Пожалуйста, напишите полный код, чтобы мы могли запустить его для решения проблемы. – Braj