change the shape of the boundary box to something more closely matching the shape of the aircraft.
Or if you want to be really fancy have several boundary boxes for the aircraft and check for collision with each of them (separate boundary boxes for fuselage, tail, and wing for example could be used, you could even use such a system to show damage to specific parts of the aircraft by detecting which part of the aircraft is being hit).
It depends on what you are using for the plane. The Shape interface has a contains(double a, double b) method that would work great. The problem is that it is an interface, and unless you used one of Java's classes that implement Shape, you would still have to do the work yourself. You may be able to get away with using the Polygon class, and definately could use Rectangle for your current example.
If you are doing 3d stuff, I don't think any of this would apply.
A Polygon just takes a bunch of points. You could make a square by giving it the 4 corners, or a triangle with 3 corners. So for your plane, you would give it the corners, with each corner you add having a line (imaginary) drawn to the previous corner. If all of the planes are the same shape, then you can pass in the same values for each plane, or extend Polygon with the default values. You will need an instance of a Polygon for each plane. You would also have to use the translate method to move it around the board. Here is the API: http://java.sun.com/javase/6/docs/api/java/awt/Polygon.html
If you get it working, you could go a step further and implement shape with a class that has several Polygons, and create Polygons for different parts of the plane, like a triangle for the wings, rectangle for the body, etc (if the planes are big enough). This way if you wanted to know what part of the plane the bullet hit to calculate damage, you could take this approach.