Unfortunately Greenfoot has no way to set the paint order of individual actors that are the same class type. One alternative solutions would be to draw the images yourself onto the world background, but I can't think of any elegant solutions to this problem off the top of my head D:
You might be able to make a list of the cards in question (the list containing the suits and values of the cards you want to 'setPaintOrder' for). Next, remove those cards from the world. Then add them back into the world in the order of bottom of stack to top of stack.
Not really! Create an Actor called Pad, and add one at each location a run of cards start. The only thing that Pad needs to do is keep a list of the cards in its spread, in the order that they appear (or should appear -- bottom to top). You could add an instance int variable to track the last known number of cards there, and when it does not equal the length of the list, remove the cards and re-enter them, and update the last known number of cards. You could add a method to Pad to return the top-most card (by getting the last card from the list).
I was just thinking (maybe I should not? lol). You could add a method addCard(Card card) to Pad. Then, the pad could add it to the list, remove the card from the world, and re-create it right then (no need for 'last known number of cards'). Each card could have a reference to indicate what pad it is currently on (so you could remove that card from that pad's list before removing the card).
Maybe, instead of addCard(Card card), you might use addCards(List<Card>cards) to move multiple cards at once.
You could go that route, but I think in this case it might be better to use an ArrayList. For one thing, you do not need to keep track of the number of cards when using ArrayList. For another thing, there are commands to add and remove subLists that would be helpful.