A product network is obtained by applying the cross operation on two graphs. It provides a general framework for design and analysis of interconnection networks and parallel algorithms. Recently, there has been an increasing interest in the problem of finding edge-disjoint trees of a graph. There are two applications. One is to enhance the ability of fault-tolerance, and the other is to develop efficient collective communication algorithms in distributed memory parallel computers. In this paper, we study the problem of constructing the maximum number of edge-disjoint trees on product networks. Let G= (V-G E-G) and F= (V-F, E-F) be two graphs having n(1) and n(2) edge-disjoint trees, respectively, and H= GxF be their product. Let t(1)=/E-G/-n(1)(/V-G/-1) and t(2)=/E-F/-n(2)/V-F/-1), That is, t(1) (t(2), resp.) is the number of edges of G (F resp.) minus the number of edges needed for constructing n(1) (n(2) resp.) edge-disjoint spanning trees on it. By assuming that t(1)greater than or equal ton(1) and t(2)greater than or equal ton(2), we firstly show that n(1)+n(2) edge-disjoint spanning trees can be constructed on H. And then, we show that in case t(1)=t(2)=0, n(1)+n(2)-2 edge-disjoint spanning trees can be constructed on H. The usefulness of our constructions is demonstrated by applying them to hypercubes, tori, and meshes.