We describe a dynamic load-balancing strategy for parallel finite element methods with adaptive mesh (h-) and order (p-) refinement. The load-balancing algorithm is based on the tiling load-balancing system, where global balance is achieved by performing local balancing within overlapping neighborhoods of processors. Tiling is applied to each mesh level created by the adaptive h-refinement. Weights are used in the migration routines to reflect the nonuniform elemental work loads caused by adaptive p-refinement. The combination of adaptive refinement and tiling significantly reduces total execution time relative to fixed-mesh, fixed-order methods yielding comparable accuracy, as we demonstrate with experiments on an nCUBE/2.