You could look at WalletAppKit to simplify the setup code.
I can't see the issue off-hand and I'm heading out for the night in a few minutes. It's apparently a bug or at the very least, poor documentation on how to use the encryption feature. If you put a breakpoint on Transaction.signInputs() line 837:
if (key.hasPrivKey() || key.isEncrypted()) {
signatures[i] = calculateSignature(i, key, aesKey, connectedPubKeyScript, hashType, anyoneCanPay);
} else {
// Create a dummy signature to ensure the transaction is of the correct size when we try to ensure
// the right fee-per-kb is attached. If the wallet doesn't have the privkey, the user is assumed to
// be doing something special and that they will replace the dummy signature with a real one later.
signatures[i] = TransactionSignature.dummy();
}
then take a look at the key object and see why both hasPrivKey() and isEncrypted() are false. I'd expect hasPrivKey to be false and isEncrypted to be true.
If you can't see what's going wrong, send me all your code and I'll try and make time tomorrow or Monday night to debug it.