У меня возникли проблемы при запуске кода ниже. Этот код используется, когда нажата кнопка на экране gui. В основном функция этой кнопки состоит в том, чтобы прочитать текст, введенный в 2 текстовых поля, получить третье значение из 2 и сохранить все 3 строки в таблице на экране графического интерфейса пользователя, используя 2-мерный массив.2D-объект, дающий nullpointerexception?
Однако, я получаю исключение NullPointerException при выполнении его в 5-й строке внутри метода addItem(). saleData - это 2D-массив с данными, которые находятся в таблице. Я создал экземпляр temp [] [] объекта с 1 строкой больше, чем объект saleData, потому что мне нужно добавить строку в таблицу, а затем я сделаю saleData = temp. Этот код работал так, как он есть в классе Gui, прежде чем я попытался использовать ООП для создания отдельного класса для работы графического интерфейса. Исключение nullpointer относится к временному объекту, я знаю это, потому что я распечатал значение temp, и это было null.
У кого-нибудь есть идеи? благодарит заранее.
public void addItem() {
int len = saleData.length + 1;
Object[][] temp = new Object[len][3];
for (int k = 0; k < saleData.length; k++) {
for (int i = 0; i < 3; i++) {
temp[k][i] = ((DefaultTableModel) table.getModel()).getValueAt(k, i);
}
}
tblContainer.removeComponent(table);
try {
int qty = Integer.parseInt(txtQty.getText());
String item = (String) items.getSelectedItem();
String sql = "Select Sell_price from stockInfo where parts like '" + item + "'";
double total = 0;
if (saleData.length != 1) {
for (int i = 0; i < saleData.length; i++) {
String sql2 = "Select sell_price from stockinfo where parts like '" + temp[i][1].toString() + "'";
try {
System.out.println("Check 0");
pst = conn.prepareStatement(sql2);
System.out.println("Check 1");
rs = pst.executeQuery();
System.out.println("Check 2");
while (rs.next()) {
System.out.println("Check 3");
String qt = temp[i][0].toString();
temp[i][2] = Double.parseDouble(rs.getString("sell_price")) * Integer.parseInt(qt);
System.out.println("Check 4");
}
} catch (Exception e) {
Dialog.show("Error", "Error 1: " + e, "OK", null);
}
}
}
try {
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
while (rs.next()) {
double price = Double.parseDouble(rs.getString("Sell_Price"));
total = qty * price;
try {
for (int m = 0; m < saleData.length; m++) {
for (int n = 0; n < 3; n++) {
((DefaultTableModel) table.getModel()).setValueAt(m, n, temp[m][n]);
}
}
temp[saleData.length][0] = qty;
temp[saleData.length][1] = item;
temp[saleData.length][2] = total;
saleData = temp;
table = new Table(new DefaultTableModel(saleColumns, saleData, true));
tblContainer.addComponent(table);
((TableLayout) table.getLayout()).setGrowHorizontally(true);
saleForm.revalidate();
} catch (NullPointerException e) {
}
}
} catch (SQLException e) {
Dialog.show("Error", "SQL Error Record Sale", "OK", null);
}
} catch (NumberFormatException nfe) {
Dialog.show("Error", "Please enter a valid quantity", "OK", null);
}
}