Strings devem ser comparadas com equals, não com == (leia aqui para saber mais). E de qualquer forma, você está vendo se elas são iguais a um espaço (já que tem um espaço entre as aspas), mas na verdade deveria ver se elas são vazias:
if ("".equals(t1.getText()) || "".equals(t2.getText())) {
// erro
}
Repare que usei "" (nada entre as aspas) em vez de " " (um espaço entre as aspas). O primeiro é uma string vazia (tamanho zero, não contém nenhum caractere), a segunda não (é uma string com tamanho 1, pois tem um caractere - o espaço em branco).
Outra alternativa é usar isEmpty:
if (t1.getText().isEmpty() || t2.getText.isEmpty()) {
// erro
}
E a partir do Java 11 você pode usar isBlank também. A diferença é que isEmpty verifica se a string é vazia (ou seja, se nada foi digitado), enquanto isBlank também verifica se a string só tem espaços.
Se você já usou isEmpty acima, então pode remover esse if (até porque ele está completamente errado, já que vc colocou a comparação com == dentro do equals (ou seja, está comparando o resultado da comparação, que será um booleano, com a string vazia).
Enfim, deixe somente o primeiro if (com isEmpty). Mas não deixe de capturar a exceção mesmo assim:
if(t1.getText().isEmpty() || t2.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "ERRO em JTField1", "Erro", JOptionPane.ERROR_MESSAGE);
} else {
try {
primeiroNumero = Integer.parseInt(t1.getText());
} catch (NumberFormatException e) {
// se a string não é vazia, mas não é um número, então vai dar erro do mesmo jeito
}
}
O try/catch é porque, mesmo se a string não for vazia, ainda poderá não ser um número (por exemplo, se digitar “abc”), ou seja, Integer.parseInt ainda poderá dar erro e você deve tratar isso.